`
zhouchaofei2010
  • 浏览: 1104140 次
  • 性别: 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...

    flink-1.19.0-bin-scala-2.12.tgz

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

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

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

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

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

    mill:您崭新的JavaScala构建工具!

    如果要在自己的项目中使用Mill,请查看我们的文档: 这是一个简单的示例,以便您可以想象它的外观: import mill . _ , scalalib . _ object foo extends ScalaModule { def scalaVersion = " 2.13.1 " } object ...

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

    entity(as[NewUser]) { user =&gt; complete(s"User ${user.name} created") } } } ~ path(IntNumber) { userId =&gt; get { complete(s"Details for user $userId") } ~ delete { complete(s"User $userId ...

    java8集合源码-scala_study:scala_study

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

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

    5. **并发处理**:在 Scala 中使用并行和并发工具,如 Futures 和 Akka,提高爬虫的效率和性能。 6. **版本控制**:熟悉 Git 工具的使用,包括创建分支、提交、合并和解决冲突。 7. **开源文化**:了解开源项目的...

    rockjvm-scala-初学者

    Scala的编译器会将Scala代码转化为字节码,可以在JVM上运行,这就是`rockjvm`可能指代的意思,强调了Scala与JVM的紧密关系。 学习 Scala 的关键知识点包括: 1. **基本语法**:Scala 的语法与 Java 有所不同,例如...

    章鱼:用于无模板验证的Scala库

    Shapeless是Scala中的一个通用元编程库,它允许开发者在编译时进行高级操作,如操作类型信息和构建类型安全的代码。章鱼库利用Shapeless,可以动态地处理不同类型的验证规则,无需为每种数据类型单独编写代码,极大...

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

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

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

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

    play2学习文档

    Framework2Startdevelopingawesomewebapplicationswiththis”,这段文字中“awesomewebapplications”应该正确扫描为“awesome web applications”,但整体意思不影响理解。通过上下文推断,读者可以对文档内容有一...

    example

    学习和探索这个示例项目,你可以了解到如何在Scala中配置和启动Flink作业,理解Flink的数据处理模型,以及如何利用Scala的特性编写Flink作业。此外,通过查看代码,你还能掌握Flink中关键API的使用方式,例如数据源...

    Flink基础教程.rar

    Flink的设计理念是“连续计算”,即数据始终处于流动状态,这使得Flink在实时数据处理中表现出色。Flink的流处理模型允许数据无界且低延迟地处理,而批处理则是流处理的一个特例,处理的是有界的输入数据集。 二、...

    springboot+idea热启动设置方法(自动加载)

    在 File -&gt; Settings -&gt; Compiler 中,选择 Compiler 选项卡,并勾选 Make project automatically 选项。 自动加载配置 在 IDEA 中,可以通过配置自动加载文件类型来实现自动加载。在 File -&gt; Settings -&gt; ...

    publet:模板Web应用程序

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

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

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

Global site tag (gtag.js) - Google Analytics