我發現自己是一個非常有趣的事實。例如我已經寫道:結構型
type A = { val st: Set[Any]
val start: Set[Any]
val Sigma : Set[Char]
def tr(f: (Tuple2[Any, Any])=>Boolean): Set[Any]
}
class Fon {
val st: Set[Any]
val start: Set[Any]
val Sigma : Set[Char]
def tr(f: (Tuple2[Any, Any])=>Boolean): Set[Any] = Set(out)
def out: String = "is just example"
}
val a: A = new Fon
a.tr(f(Tuple2('a',0)))
但是,如果我會嘗試做電a.out的 - 我得到一個錯誤,即A型已經不存在的「出」 什麼發生在此,如何工作? 謝謝。
此錯誤代碼不正確。至少,'Set [out]'和'Tuple ['a',0]'是不正確的,因爲正在使用[]'而不是'()'。另外,這與結構類型沒有任何關係 - 如果你使用'val a:AnyRef = new Fon;它會抱怨所有相同的。 – 2011-06-10 20:53:36
也許我不明白的東西,但你可以做以下事情:'type A = {def out:String}; class AA {def def:String = out2; def out2 =「out2」; val a:A =新的AA; a.out' - 結果'String = out2' – dvigal 2011-06-11 05:04:40
@lisasha你的例子中缺少'}'。我在'out2'的定義之後假設。無論如何,這是一個問題還是一個陳述?如果有問題,那麼是的。如果一個聲明,那麼我不明白你想要做的點。你期望它失敗嗎?如果是這樣,爲什麼? – 2011-06-11 18:45:51