小编Sta*_*tan的帖子

Scala强调用于简化函数文字的语法

我有以下代码:

var x = Array(1,3,4,4,1,1,3)
var m = Int.MaxValue
x.foreach((x)=>(m = m min x))
Run Code Online (Sandbox Code Playgroud)

我试图将最后一句简化为:

x.foreach((m = _ min m))
Run Code Online (Sandbox Code Playgroud)

但口译员说:

scala>  x.foreach((m = _ min m))     
<console>:8: error: missing parameter type for expanded function ((x$1) => x$1.min(m))
    x.foreach((m = _ min m))
                   ^
Run Code Online (Sandbox Code Playgroud)

我试图更明确地说明这种类型:

scala>  x.foreach((m = (_:Int) min m))
<console>:8: error: type mismatch;
found   : (Int) => Int
required: Int
    x.foreach((m = (_:Int) min m))
                           ^
Run Code Online (Sandbox Code Playgroud)

编译器和我彼此不了解:(

最好的祝福,

斯坦

syntax lambda scala function-literal scala-placeholder-syntax

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