例如:
def factory(_name: String) = new Person {
val name: String = _name
}
我希望避免在外部范围内修改_name
的名称。
答案 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章)中有一节讨论了阴影 - 并且它没有讨论限定那些“隐含”范围的方法。
快乐的编码。