0
可以說我有保持一個參數化的數據類型的數據結構:階使用類參數的佔位符(或輸入變量)
case class Terminal[A](value: A, name: String ="")
我可以輕鬆地創建一個Terminal[Double]
如果我通過它物化常數:
val terminal = Terminal(2.0)
不過,我希望它也能收到(不兌現)input
,這樣我可以用不同的上下文中端多次評估。我可以通過調用名value
實現一個簡單的解決方案,即
class Terminal[A](value: => A, name: String ="") {
def getValue = this.value
}
var x = 1.0
val terminal = new Terminal(x)
terminal.getValue // 1.0
x = 100.0
terminal.getValue // 100.0
然而這個計劃的用戶將有類似var input_x = None
,這不是很好的初始化input
,然後改變其狀態,這在輪將不得不讓我把value
變成Option[A]
這是處理這種情況的最佳方法嗎?是不是我可以使用的任何設計模式或scala功能?
我也可以創建一個類Input
來表示這些依賴於上下文的輸入,但是之後我需要改變很多東西。
您似乎無法將特定的解決方案應用於某個問題。麻煩的是,您正在尋求實施解決方案的幫助,這幾乎肯定是錯誤的,但從未描述您嘗試解決的實際問題。我建議你退後一步,試着描述爲什麼(你認爲)你需要這個'終端'類,以及如何想象在現實生活中使用它。 – Dima