【问题标题】:Anonymous function pecularities匿名函数特性
【发布时间】:2013-07-01 04:52:34
【问题描述】:

我对两者的区别感到困惑

Array(true,false).filter(x=>x).map(println(_))

(runs fine)

Array(true,false).filter(_).map(println(_))

(throws error)

注意过滤器参数:x=>x_。我认为x=>x_ 是同义词。这要怎么解释?

【问题讨论】:

  • 请参阅我的回答 here,了解您在此处遇到的问题的一些讨论(和参考)。
  • 出于好奇,你为什么要运行.map(println(_))?不要认为将某些内容映射到副作用列表是一个好主意。
  • @KChaloux 我使用副作用在 repl 中显示被过滤的内容。
  • @Dominykas Repl 通常会为您打印出您的结果。唯一遇到麻烦的情况是当您有 很多 个值并且 Repl 用省略号截断它们时。在任何情况下,对于有副作用的打印,您可能需要.foreach(println(_))(或只是foreach println _

标签: scala anonymous-function iterable


【解决方案1】:

filter(_) 被脱糖为x => filter(x)。查看您的地图使用情况:map(println(_)),它被脱糖为map(x => println(x)),而不是map(println(x => x)),这是不对的,不会工作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    • 2012-08-03
    • 2011-12-29
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    相关资源
    最近更新 更多