【问题标题】:Underscore in Scala [duplicate]Scala中的下划线[重复]
【发布时间】: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,我也有疑问?我自己无法创建任何练习,我想练习比上课更多的练习。

【问题讨论】:

标签: scala functional-programming scala-collections


【解决方案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 试图做的事情完全相反,即在一个地方提供尽可能高质量的信息。
猜你喜欢
  • 2018-04-10
  • 1970-01-01
  • 1970-01-01
  • 2015-03-24
  • 2015-12-03
  • 1970-01-01
  • 2018-11-21
  • 2011-11-25
  • 1970-01-01
相关资源
最近更新 更多