你好,游客 登录
背景:
阅读新闻

scala中“=>”是什么

[日期:2017-10-27] 来源:iteye  作者:zhouchaofei2010 [字体: ]

目前知道的基本和匿名函数定义和函数类型声明有关,以及在case语句中的使用

=> 
1、 匿名函数定义, 左边是参数  右边是函数实现体  (x: Int)=>{}
2、函数类型的声明,左边是参数类型,右边是方法返回值类型                (Int)=>(Int)
3、By-name-parameter      f(p :=>Int)
            与2的区别参考:scala By-name-parameter 和 Function type的区别
4、case 语句中 case x => y
 

 

不过stackoverflow 上关于这方面的讨论挺多的,故在此记录一下

 

比如来自 http://stackoverflow.com/questions/6951895/what-does-and-mean-in-scala 的一位的回复:

 

=> has several meanings in Scala, all related to its mathematical meaning as implication.

  • In a value, it introduces a function literal, or lambda. e.g. the bit inside the curly braces in List(1,2,3).map { (x: Int) => x * 2 }(匿名函数定义

  • In a type, with symbols on both sides of the arrow (e.g. A => T(A,B) => T(A,B,C) => T, etc.) it's sugar for Function<n>[A[,B,...],T], that is, a function that takes parameters of type A[,B...], and returns a value of type T.(函数类型定义

    • Empty parens on the left hand side (e.g. () => T) indicate that the function takes no parameters (also sometimes called a "thunk");

    • Empty parens on the right hand side denote that it returns ()—the sole value of type Unit, whose name can also be written ()—confused yet? :)

      A function that returns Unit is also known as a procedure, normally a method that's called only for its side effect.

  • In the type declaration for a method or function parameter, with no symbol on the left hand side (e.g. def f(param: => T)) it's a "by-name parameter", meaning that is evaluated every time it's used within the body of the function, and not before. Ordinary "by-value" parameters are evaluated before entry into the function/method.(函数类型定义

  • In a case clause, they separate the pattern (and optional guard) from the result expression, e.g. case x => y.(case 语句

收藏 推荐 打印 | 阅读:
相关新闻       scala  scala =&gt;