[英]Optional method argument by passing Unit as type to generic trait
说我有一个特点:
trait Foo[T] {
val x: T => Any
}
现在我想通过将其设为一个单位来省略 function 参数:
class Bar extends Foo[Unit] {
override val x = () => "Hello"
}
上面的代码无法编译(“x 不会覆盖任何内容”)。
有没有办法在 Scala 中进行这项工作?
我认为这里的误解是()
不是Unit
类型的值,而是表示一个空参数列表。 所以
() => "Hello"
是没有参数的一元 function。 但是,您的 trait 需要一个 function ,它接受一个Unit
类型的参数。
如果你删除了这里不需要的override
,你会得到一个编译器错误,它将指向那个方向。 如果您随后将()
替换为通配符_
或更好的(_: Unit)
,您的代码将编译。
trait Foo[T] {
val x: T => Any
}
trait Bar extends Foo[Unit] {
val x: Unit => Any = (_: Unit) => "Hello"
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.