可选参数值是否可以依赖于Scala中的另一个参数
有人知道如果这样的事情可能在Scala:
case class Thing(property:String) def f(thing:Thing,prop:String = thing.property) = println(prop) 上面的代码不编译;给出错误错误:没有找到:value thing在thing.property 以下显示预期的行为: f(Thing("abc"),"123") // prints "123" f(Thing("abc")) // prints "abc" 我意识到,我可以使用一个Option [String]的参数,并在函数定义中进行检查,但是我想知道在2.8.0中是否有新的命名/默认参数支持. 解决方法
是的,可以在Scala 2.8中.这是
“Named and Default Arguments in Scala 2.8”设计文件的引用:
def f(a: Int = 0)(b: Int = a + 1) = b // OK 又如: def f[T](a: Int = 1)(b: T = a + 1)(c: T = b) // generates: // def f$default$1[T]: Int = 1 // def f$default$2[T](a: Int): Int = a + 1 // def f$default$3[T](a: Int)(b: T): T = b 据此,您的代码可能如下所示: scala> case class Thing(property:String) defined class Thing scala> def f(thing:Thing)(prop:String = thing.property) = println(prop) f: (thing: Thing)(prop: String)Unit scala> f(Thing("abc"))("123") 123 scala> f(Thing("abc"))() abc (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |