`
zhouchaofei2010
  • 浏览: 1085900 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

"=>" 在scala 中的意思

阅读更多

 

目前知道的基本和匿名函数定义和函数类型声明有关,以及在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 语句

 

 

 

 

http://stackoverflow.com/questions/6951895/what-does-and-mean-in-scala

 

http://stackoverflow.com/questions/7888944/scala-punctuation-aka-symbols-and-operators

5
5
分享到:
评论

相关推荐

    Scala基础知识01

    Option、 None、 Some 是 scala 中定义的类型,它们在 scala 语言中十分常用,因此这三个类型很重要。 None、 Some 是 Option 的子类,它主要解决值为 null 的问题,在 java 语言中,对于定义好的 HashMap,如果 get...

    effectful, 在 Scala 中,类型安全effectful计算的语法.zip

    effectful, 在 Scala 中,类型安全effectful计算的语法 Effectful 如果我们想要理解所有这些结构的符号影响,也许我们应该尝试回收已经经拥有的符号。,Paterson,,,,。Effectful是一个小型的宏库,允许你以比 ...

    scala-implicits:Scala 的隐式元编程教程

    请注意,在解释器中,类及其伴生对象必须在同一个 go 中输入。 为此,建议使用:paste 。 注意:“iff”不等于“if”。 我用“当且仅当”的意思使用。 本文大致基于 Scala 2.10.4。 可能存在不反映当前语言标准的...

    flink-1.19.0-bin-scala-2.12.tgz

    Flinken在德语里是敏捷的意思,意指快速精巧。其代码主要是由 Java 实现,部分代码由 Scala实现。Flink既可以处理有界的批量数据集,也可以处理无界的实时流数据,为批处理和流处理提供了统一编程模型。

    java8集合源码-scala_study:scala_study

    在意大利语中是阶梯的意思,据说它也有作为通往更好编程语言的阶梯的意思。 什么是领域特定语言 (DSL)? 培育新类型 像原始类型一样使用内置类型 建立新的控制结构 基于演员 scala 标志是什么意思? scala 楼梯的...

    scallot:Scala HTTP Bot 解析网页中的嵌入视频

    扇贝 Scala HTTP Bot 解析网页中的嵌入视频

    yo-play:Yeoman 生成器在 Scala 中使用 slick(默认情况下在内存数据库中使用 H2)为 Play 框架创建环境,并且能够生成非常简单的异步 (Akka) crud。 使用 sbt 进行依赖管理

    YoPlay 是生成器,为 (Scala) + (默认情况下在内存数据库中使用 )创建开发环境。 几分钟后,您将获得: 开箱即用的开发环境 适用于实体的非常基本的异步 CRUD - 适用于启动器/模拟后端 你需要什么? - Yeo 是一...

    Scala—— 2. 流程控制

    支持返回多种类型(前提是在不确定类型的情况下,val y:String或val y:Int这样都不行)。 val y = if(x &gt; 1) 1 else hello val b = if(x &lt; 1) 1 注意这个后面没有else返回的是AnyVal类型,这个AnyVal是所有类型...

    finatra:基于TwitterServer和Finagle构建的快速,可测试的Scala服务

    Finatra是一个轻量级框架,用于在和之上构建快速,可测试的Scala应用程序。 Finatra提供了用于创建和和的易于使用的API,以及强大的JSON支持,通过现代日志记录, 实用程序等。 参与进来 网站: : 最新消息: ...

    swakka:一个Scala库,用于通过Akka-Http以类型安全的方式创建Swagger定义

    swakka:一个Scala库,用于通过Akka-Http以类型安全的方式创建Swagger定义

    publet:模板Web应用程序

    除了三种Wiki语言之外,您还可以编写Scala脚本并从广泛的模板语言中进行选择,以不仅方便地创建静态站点,还可以方便地创建动态站点。 主要将三个伟大的开源组件粘合在一起: 是模板引擎使用Java实现 出色的用户...

    shims:猫和scalaz之间的无缝互操作层

    由于教学上的原因,该存储库已被保留,因为很有趣地看到在Scala的类型系统(Scala 2和Scala 3)中执行这种操作所需的技术是什么。 但是,我将不再维护Shims的发展。 我建议谁是取决于它升级到猫在您方便大家,因为...

    imp:宏,用于调用隐式值

    在Scala中创建类型类时有一个约定,以在伴随对象上提供apply方法,以访问隐式类型类实例。 这里可以使用summon宏来创建此方法的更有效形式。 ([1]通过上下文绑定,我的意思是将类型参数声明为[A: Magma] ,它也与...

    SMPP:小医学短语命名实体识别项目

    SMPP 最初是由杰出的程序员 Sujit Pal ( ) 在 Scala 中创建的。 在信息学实验中使用 NER 时,我发现它在具有一些概念的短句上的性能与该特定领域中的 cTAKES 相当或更好。 我将其转换为 python 并添加了一些功能,...

    TP-Objetos

    TP-Objetos TP Objetos。 萨尔瓦多人实践行动纲领》(来源,埃Scala1,埃Scala2... ReadlineSync:在图书馆中可以自由使用实用程序,而在teclado中可以使用Ingresar datos y valores。 可以从以下任何一种方式获得好处

    Apache Kafka 2.8.1(kafka_2.12-2.8.1.tgz)

    Apache Kafka 2.8.1(Scala 2.12 :kafka_2.12-2.8.1.tgz) 是一个开源分布式事件流平台,被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用程序。) 是一个开源分布式事件流平台,被数千家公司用于高...

    wolt-assigment

    #沃尔特任命如何使它工作您需要与版本8相同或更高的Java 在cmd中执行'java --version',如果它显示了Java 8(含)版本,则可以使用如果没有Java,请安装Oracle JDK或OpenJDK 8+版本安装sbt: ://www.scala-sbt.org ...

    spark mllib 软件包-全.txt

    包含spark 、hadoop、 intellJ、 scala、hadooponwindows等全套资料包。2资源分意思一下。小白将近5个小时的摸索成果!

    在线竞标

    介绍拉各姆(Lagom)是瑞典语,意思是恰到好处。 微服务是关于创建大小合适的服务,也就是说,它们具有正确的功能和隔离级别,以能够适当地实现可伸缩和有弹性的系统。 Lagom致力于确保您的应用程序充分发挥潜能,...

    【大数据】SparkSql连接查询中的谓词下推处理(一)

    SparkSql是架构在Spark计算框架之上的分布式Sql引擎,使用DataFrame和DataSet承载结构化和半结构化数据来实现数据复杂查询处理,提供的DSL 可以直 接使用scala语言完成Sql查询,同时也使用thriftserver提供服务化的...

Global site tag (gtag.js) - Google Analytics