在Scala中,有没有办法访问外部作用域中定义的符号(变量)?

时间:2011-09-15 22:11:53

标签: scala

例如:

def factory(_name: String) = new Person {
    val name: String = _name
}

我希望避免在外部范围内修改_name的名称。

1 个答案:

答案 0 :(得分:7)

虽然远非一种理想的方法,但这“诀窍”:

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章)中有一节讨论了阴影 - 并且它没有讨论限定那些“隐含”范围的方法。

快乐的编码。