繁体   English   中英

匿名函数的Scala占位符语法

[英]Scala placeholder syntax for anonymous function

我有一个类型为Array的val numSeq

scala> val numSeq=Array(3.1415,2.71828,9.8)
numSeq: Array[Double] = Array(3.1415, 2.71828, 9.8)

现在想要使用占位符语法将numSeq每个元素转换为Int并将其打印出来。 毫无疑问,以下失败:

scala> numSeq foreach (println (_.toInt))
<console>:13: error: missing parameter type for expanded function ((x$1: <error>) => x$1.toInt)
   numSeq foreach (println (_.toInt))

但令我惊讶的是以下陈述是有道理的:

scala> numSeq foreach (Console println _.toInt)
3
2
9

但为什么它没关系,只添加了前缀Console

这是因为词汇范围以及它们如何被scalac识别:

  • _.toInt是一个函数
  • println(_.toInt) :要打印一个函数,输入类型不解析
  • Console.println(_.toInt) :同样,打印一个函数
  • Console println _.toInt实际上与:( (x => Console println x.toInt)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM