Scala中的下划线[重复]

Posted

技术标签:

【中文标题】Scala中的下划线[重复]【英文标题】:Underscore in Scala [duplicate] 【发布时间】:2021-07-04 02:25:15 【问题描述】:

我在大学里学习了 Scala 1.5 个月——我学到的是:集合、模式匹配、集合上的函数,但我的问题是:下划线到底是什么意思? 我看到你们几乎到处都在使用它,老实说,我不知道如何阅读它。 例如:

val list1 = List(1,2,3,4,5)
list1.map(_ * 2) or list1.map(n => n*2) 

那里有什么不同?下划线符号下可能隐藏着什么? 我看到你们也几乎总是在reduceLeft(_ + _) 中使用类似这样的东西 - 我怎么能替换它来查看,隐藏在它下面的是什么?

如果您推荐该页面:www.scala-exercises.org 来练习和学习 Scala,我也有疑问?我自己无法创建任何练习,我想练习比上课更多的练习。

【问题讨论】:

this 有帮助吗? ***.com/questions/8000903/… 【参考方案1】:

下划线用于将函数中的第N个参数替换为匿名参数,例如下面几行是等价的

list1.map(_ * 2)
list1.map(n => n * 2) 

关于reduceLeft(_ + _),如前所述,将第1个参数和第2个参数替换如下,因此它们是等价的

list1.reduceLeft(_ + _)
list1.reduceLeft((a,b) => a + b)

等等……

希望现在清楚

【讨论】:

谢谢,但是关于 reduce 对我来说非常困难:所以在第一个下划线下我有 (a,b) => a,而在第二个下划线下我只有 b? 请不要回答重复的问题。如果您真的确信重复目标上已经存在的 13 个答案之一中尚未涵盖的重要缺失,那么请写一个答案那边 .回答重复的问题会将信息分散到多个地方,这与Stack Overflow 试图做的事情完全相反,即在一个地方提供尽可能高质量的信息。

以上是关于Scala中的下划线[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Scala Eclipse代码出现下划线的问题解决

scala - 泛型中的任何与下划线

scala下划线

`:_*`(冒号下划线星号)在 Scala 中有啥作用?

Scala之下划线的作用

大数据开发-Scala 下划线的多种场景