例如:在斯卡拉,有沒有一種方法來訪問外部範圍中定義的符號(變量)?
def factory(_name: String) = new Person {
val name: String = _name
}
我期待,以避免在外部範圍重整的_name
名稱。
例如:在斯卡拉,有沒有一種方法來訪問外部範圍中定義的符號(變量)?
def factory(_name: String) = new Person {
val name: String = _name
}
我期待,以避免在外部範圍重整的_name
名稱。
儘管遠遠稱不上理想的做法,這種「做的伎倆」:
abstract class Person { val name: String }
def factory(name: String) = {
val _name = name
new Person {
val name: String = _name
}
}
factory("Fred").name // Fred
我不知道任何其他方式去接近。 Scala Language Specification(第2章)中有一節討論了影子 - 它們從來沒有討論過限定這些「隱式」範圍的方法。
快樂編碼。
謝謝。你見過我偶然發現的這個小竅門嗎?在一個函數中,假設你想隱含地使用一個參數,但你不想聲明這個參數在你的函數簽名中是隱含的。你可以做'隱式val _ = x'(其中x是函數參數的名稱)。 –
@ landon9720我不知道。 – 2011-09-15 23:03:18
@pst,我的意思是:因爲'name'是方法'factory'的接口的一部分,所以不應該被破壞,而應該引入一個局部變量,就像在你的答案中一樣。 –