把 x => func(x) 简化为 func _ 或 func 的过程称为 eta-conversion把 func 或 func _ 展开为 x => func(x) 的过程为 eta-expansion
Eta Expansion的就近expand解析原则:
Underscores extend outwards to the closest closing Expr : top-level expressions or expressions in parentheses
匿名函数简写注意事项:
所以当匿名函数有多个括号嵌套的时候,不要使用_的简写方式 ,而应该用普通匿名函数的书写方式。比如 (x:Int,y:Int)=> (x*2)+f(y+2)
例子解析:
例子1:
例子2:
例子3:
val myStrings = new Array[String](3)
// do some string initialization
// this works
myStrings.foreach(println(_))
// ERROR: missing parameter type for expanded function
myStrings.foreach(println(_.toString))
It expands to:
myStrings.foreach(println(x => x.toString))
You want:
myStrings.foreach(x => println(x.toString))
The placeholder syntax for anonymous functions replaces the smallest possible containing expression with a function.
This has already been addressed in a related question. Underscores extend outwards to the closest closing Expr
: top-level expressions or expressions in parentheses.
(_.toString)
is an expression in parentheses. The argument you are passing to Exception
in the error case is therefore, after expansion, the full anonymous function (x$1) => x$1.toString
of type A <: Any => String
, while Exception
expects a String
.
In the println
case, _
by itself isn't of syntactic category Expr
, but (println (_))
is, so you get the expected (x$0) => println(x$0)
.
相关推荐
本书介绍Scala基本语法、构造。以及如何将您已经知道的复制java语法转换为Scala,了解Scala除了javabecome之外还提供了哪些功能编程概念和惯用技巧和建议,这些技巧和建议在将现有java项目转换为Scala时非常有用
Learn Scala is split into four parts: a tour of Scala, a comparison between Java and Scala, Scala-specific features and functional programming idioms, and finally a discussion about adopting Scala in...
《在Scala中进行编程:全面的分步指南》(Programming in Scala: A comprehensive step-by-step guide)是一本关于Scala编程语言的权威教材。这本书的独特之处在于它的共同作者是Scala语言的设计师Martin Odersky,...
【课程大纲】第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4讲-Scala编程详解:条件控制与循环 共7页第5讲-Scala编程详解:函数入门 共5页第6讲-Scala编程...
【课程大纲】第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4讲-Scala编程详解:条件控制与循环 共7页第5讲-Scala编程详解:函数入门 共5页第6讲-Scala编程...
【课程大纲】第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4讲-Scala编程详解:条件控制与循环 共7页第5讲-Scala编程详解:函数入门 共5页第6讲-Scala编程...
【课程大纲】第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4讲-Scala编程详解:条件控制与循环 共7页第5讲-Scala编程详解:函数入门 共5页第6讲-Scala编程...
【课程大纲】第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4讲-Scala编程详解:条件控制与循环 共7页第5讲-Scala编程详解:函数入门 共5页第6讲-Scala编程...
【课程大纲】第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4讲-Scala编程详解:条件控制与循环 共7页第5讲-Scala编程详解:函数入门 共5页第6讲-Scala编程...
【课程大纲】第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4讲-Scala编程详解:条件控制与循环 共7页第5讲-Scala编程详解:函数入门 共5页第6讲-Scala编程...
【课程大纲】第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4讲-Scala编程详解:条件控制与循环 共7页第5讲-Scala编程详解:函数入门 共5页第6讲-Scala编程...
【课程大纲】第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4讲-Scala编程详解:条件控制与循环 共7页第5讲-Scala编程详解:函数入门 共5页第6讲-Scala编程...
【课程大纲】第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4讲-Scala编程详解:条件控制与循环 共7页第5讲-Scala编程详解:函数入门 共5页第6讲-Scala编程...
【课程大纲】第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4讲-Scala编程详解:条件控制与循环 共7页第5讲-Scala编程详解:函数入门 共5页第6讲-Scala编程...
scala xml parse Scala xml解析全解教程 学习用scala处理解析xml
Scala还提供了多种控制结构,如While循环表达式、Do循环表达式、For语句段、Return表达式、Throw表达式、Try表达式等。 模式匹配是Scala中的一个核心概念,它允许程序员按照模式来检查数据。模式匹配包括变量模式、...
使用Scala进行Web开发使用Scala进行Web开发使用Scala进行Web开发使用Scala进行Web开发使用Scala进行Web开发使用Scala进行Web开发使用Scala进行Web开发使用Scala进行Web开发使用Scala进行Web开发使用Scala进行Web开发...
赠送jar包:scala-xml_2.11-1.0.1.jar; 赠送原API文档:scala-xml_2.11-1.0.1-javadoc.jar; 赠送源代码:scala-xml_2.11-1.0.1-sources.jar; 赠送Maven依赖信息文件:scala-xml_2.11-1.0.1.pom; 包含翻译后的API...
赠送jar包:scala-xml_2.11-1.0.4.jar; 赠送原API文档:scala-xml_2.11-1.0.4-javadoc.jar; 赠送源代码:scala-xml_2.11-1.0.4-sources.jar; 赠送Maven依赖信息文件:scala-xml_2.11-1.0.4.pom; 包含翻译后的API...