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中的下划线[重复]的主要内容,如果未能解决你的问题,请参考以下文章