Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala中自定义类型的一元运算符定义_Scala_Operator Overloading_Anonymous Function - Fatal编程技术网

Scala中自定义类型的一元运算符定义

Scala中自定义类型的一元运算符定义,scala,operator-overloading,anonymous-function,Scala,Operator Overloading,Anonymous Function,已尝试运行此代码: def!:Int=>Boolean=p:Int=>Boolean=>!p 存在编译错误: [error] value unary_! is not a member of Int => Boolean [error] def ! : Int => Boolean = (p : Int => Boolean) => !p 错误突出显示为!p 编译器不应该自动判断p的结果是布尔值吗 提前谢谢 编辑:根据评论,还尝试了以下操作。虽然我已经用其他

已尝试运行此代码:

def!:Int=>Boolean=p:Int=>Boolean=>!p

存在编译错误:

[error] value unary_! is not a member of Int => Boolean  
[error]   def ! : Int => Boolean = (p : Int => Boolean) => !p  
错误突出显示为!p

编译器不应该自动判断p的结果是布尔值吗

提前谢谢

编辑:根据评论,还尝试了以下操作。虽然我已经用其他方法完成了我的任务,但我正在尝试学习如何定义一元运算符

定义一元数!:Int=>Boolean=p:Int=>Boolean=>!p_


仍在获取编译器错误!也许你打算这样做:

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

也许你打算这样做:

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

一元!对于自定义类型,必须将其命名为一元数组!就像在错误中一样。你的p取整数,所以!什么类的一元运算符?根本不清楚你想实现什么。你能不能说得更具体一点,你想做什么?你不是在打电话给p。所以!不是否定p的返回值,而是p本身,和!不是为函数定义的运算符。例如一元运算符!对于自定义类型,必须将其命名为一元数组!就像在错误中一样。你的p取整数,所以!什么类的一元运算符?根本不清楚你想实现什么。你能不能说得更具体一点,你想做什么?你不是在打电话给p。所以!不是否定p的返回值,而是p本身,和!不是为函数定义的运算符。例如,非常好。多谢。我必须弄清楚为什么我的尝试没有成功,非常好。多谢。我必须弄清楚这为什么有效&我的尝试没有成功。