例如:
def factory(_name: String) = new Person {
val name: String = _name
}
Run Code Online (Sandbox Code Playgroud)
我希望避免破坏_name外部范围的名称.
小智 7
虽然远非一种理想的方法,但这"诀窍":
abstract class Person { val name: String }
def factory(name: String) = {
val _name = name
new Person {
val name: String = _name
}
}
factory("Fred").name // Fred
Run Code Online (Sandbox Code Playgroud)
我不知道有任何其他方法可以接近.Scala语言规范(第2章)中有一节讨论了阴影 - 而且它没有讨论限定那些"隐含"范围的方法.
快乐的编码.
| 归档时间: |
|
| 查看次数: |
636 次 |
| 最近记录: |