斯卡拉:与模拟相关的时髦

时间:2018-01-25 15:05:30

标签: scala groovy syntax

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

0 个答案:

没有答案