gpt4 book ai didi

Scala 下划线用于简化函数字面量的语法

转载 作者:行者123 更新时间:2023-12-04 20:21:29 25 4
gpt4 key购买 nike

我有以下代码:

var x = Array(1,3,4,4,1,1,3)
var m = Int.MaxValue
x.foreach((x)=>(m = m min x))

我试图将最后一句话简化为:
x.foreach((m = _ min m))

但口译员说:
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))
^

我试图更明确地说明类型:
scala>  x.foreach((m = (_:Int) min m))
<console>:8: error: type mismatch;
found : (Int) => Int
required: Int
x.foreach((m = (_:Int) min m))
^

编译器和我互不理解:(

此致,

斯坦

最佳答案

首先,请注意

val m = x.min

做你想做的事
val m = (Int.MaxValue /: x)(_ min _)

我将留给您阅读有关这些内容的更多信息(关于集合和折叠的 min 方法;请注意,这些没有您写的那么快)。

问题是编译器在你写下划线时迷失了你的意思和有效类型可能是什么,当你添加类型信息时,它认为你正在尝试在那里编写一个函数并将其分配给 m .但当然 mInt ,不是函数,所以它会提示。

直接写就行了。它只是一些额外的字符:
x.foreach(i => m = m min i)

关于Scala 下划线用于简化函数字面量的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5981732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com