刚刚学习Scala。
试过这个:
def!def! :Int => Boolean =(p:Int => Boolean)=> !P获取编译器错误:
[错误]值unary_!不是Int =>的成员布尔
[错误] def! :Int => Boolean =(p:Int => Boolean)=> !p
错误突出显示为“!p”
编译器是否应该自动判断p的结果是否为布尔值?
提前致谢
编辑:根据评论,尝试了以下内容。尽管如此,我还是尝试了解如何定义一元运算符
def anary_! :Int => Boolean =(p:Int => Boolean)=> !(第(_))
仍然在“!(p(_))”
处收到编译器错误答案 0 :(得分:4)
也许你打算这样:
scala> class C(p: Int => Boolean) { def unary_! : Int => Boolean = !p(_) }
defined class C
scala> val c = new C(i => i < 0)
c: C = C@4d9cad9d
scala> (!c)(42)
res0: Boolean = true