相关疑难解决方法(0)

为所有适用类型传递函数

我按照这里的建议来定义一个名为square的函数,然后尝试将它传递给一个名为square的函数.函数定义如下:

 def square[T](n: T)(implicit numeric: Numeric[T]): T = numeric.times(n, n)
 def twice[T](f: (T) => T, a: T): T = f(f(a)) 
Run Code Online (Sandbox Code Playgroud)

当调用两次(square,2)时,REPL会发出错误消息:

scala> twice(square, 2)
<console>:8: error: could not find implicit value for parameter numeric: Numeric[T]
       twice(square, 2)
         ^
Run Code Online (Sandbox Code Playgroud)

任何人?

scala

6
推荐指数
1
解决办法
1755
查看次数

Scala重载方法值无法应用

以下代码有效:

def bbb(v: Double => Unit)(a: Double): Unit = v(a)
bbb{v: Double => v == 0 }(5)
bbb{v: Double =>  Array(v) }(5)
Run Code Online (Sandbox Code Playgroud)

但是,如果我bbb按如下方式重载,那么除非我为第一个bbb调用手动分配类型签名,否则它将无法正常工作:

def bbb(v: Double => Unit)(a: Double): Unit = v(a)
def bbb(v: Double => Array[Double])(a: Double): Array[Double] = v(a)
bbb{v: Double => v == 0 }(5) // bbb{(v => v == 0):(Double => Unit)}(5)
bbb{v: Double =>  Array(v) }(5)
Run Code Online (Sandbox Code Playgroud)

scala

5
推荐指数
1
解决办法
6501
查看次数

标签 统计

scala ×2