Groovy有很棒的语法糖叫with
。例如:
@groovy.transform.ToString
class Person {
String name
int age
}
def p = new Person()
p.with {
name = "Joe"
age = 10
}
println(p)
输出:
Person(Joe, 10)
Scala中有没有机会实现相同的行为?
是的,我可以导入特定变量的所有属性,如下所示:
scala> case class Person(name: String, age: Int)
defined class Person
scala> val p = Person("Joe", 10)
p: Person = Person(Joe,10)
scala> import p._
import p._
scala> name
res0: String = Joe
scala> age
res1: Int = 10
但这种方法有缺点 - 范围太广,我不想把它包装成代码块
此处描述了类似的内容:http://meta.plasm.us/posts/2013/08/30/horrible-code/
您可以在此处尝试此Groovy代码:groovyconsole.appspot.com