`

Scala Functions as Objects

 
阅读更多

原创转载请注明出处:http://agilestyle.iteye.com/blog/2333597

 

先看一个简答的例子

package org.fool.scala.functionobjects

object DisplayVector extends App {
  /*
   Version 1 - DisplayVector
   */
  def show(n: Int): Unit = {
    println(n)
  }

  val v = Vector(1, 2, 3, 4, 5)

  v.foreach(show)

  /*
   Version 2 - DisplayVectorWithAnonymous
   */
  v.foreach(n => println(n))
}

Note:

当作参数传递给其他方法或函数的函数通常都非常小,而且常常只使用一个词。对于强制创建具名方法然后将其当做参数传递这种做法,会带来额外的工作量,也会给程序阅读者带来额外的困扰。因此我们可以改为定义一个函数,但不给出名字,称为匿名函数

匿名函数是使用“=>”符号定义的,符号的左边是参数列表,而右边是单个表达式(可以是组合表达式),改表达式将产生函数的结果

 

Console Output


 

如果需要多个参数,那么就必须对参数列表使用括号,仍然可以利用类型推断: 

package org.fool.scala.functionobjects

object TwoArgAnonymous extends App {
  val v = Vector(29, 37, 15, 3, 11)
  println(v.sorted)

  val sortedByDesc = v.sortWith((i, j) => j < i)
  println(sortedByDesc)
}

Console Output


 

具有0个参数的函数也可以是匿名的。“=>”和Unit合起来表示不返回任何信息

package org.fool.scala.functionobjects

class Later(val f: () => Unit) {
  def call(): Unit = {
    f()
  }
}

object CallLater extends App {
  val l = new Later(() => println("no args"))
  l.call()

  // assign an anonymous function to a var or val
  val later1 = () => println("now")
  val later2 = () => println("now")
  later1()
  later2()
}

Console Output 


 

 

 

  • 大小: 14.7 KB
  • 大小: 12 KB
  • 大小: 11.6 KB
分享到:
评论

相关推荐

    Programming Scala- Scalability = Functional Programming + Objects, 2 edition

    注意是Programming Scala的第二版,而不是Programming in Scala的第二版,更注重于与Spark相关的知识!强烈推荐!Programming Scala- Scalability = Functional Programming + Objects, 2 edition

    scala sdk scala-2.12.3

    Scala SDK,全称为Scala Software Development Kit,是用于开发Scala应用程序的核心工具集。Scala是一种多范式的编程语言,融合了面向对象和函数式编程的特点,它运行在Java虚拟机(JVM)上,能够充分利用Java生态...

    scala3 scala3 scala3 scala3 scala3

    Scala3,也被称为Scala 3或Dotty,是Scala编程语言的一个重大更新,旨在提高其简洁性、可读性和类型安全性。Scala3的发布标志着该语言的进一步成熟,它引入了一系列改进,旨在解决早期版本中的一些痛点,同时保持对...

    Programming-in-Scala-2nd.pdf

    You won’t understand the zen of objects being functions and functions being objects in your first week. Each feature of the language is another light bulb waiting to switch on over your head. I’m ...

    Scala and Spark for Big Data Analytics.pdf

    starting point, we will discuss a brief introduction to Scala, such as the basic aspects of its history, purposes, and how to install Scala on Windows, Linux, and Mac OS. After that, the Scala web ...

    scala2.12.1Windows镜像包

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的概念。这个"scala2.12.1Windows镜像包"是为Windows操作系统设计的Scala编程环境的安装包,版本号为2.12.1。Scala 2.12.x系列是其重要的一个稳定...

    scala-sbt-scala编译工具

    External project support (list a git repository as a dependency!) Parallel task execution, including parallel test execution Library management support: inline declarations, external Ivy or Maven ...

    Scala考试题1

    - 导入 `scala.jdk.CollectionConverters`,可以使用 `.asJava` 和 `.asScala` 转换。 16. **函数 values**: - 编写一个函数,根据给定区间和函数,生成对应的输入输出对的集合。 17. **双色球问题**: - 生成...

    scala-2.12.10.zip

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的概念。这个"scala-2.12.10.zip"文件是Scala编程语言的特定版本——2.12.10,专为Windows操作系统设计的安装包。Scala 2.12.x系列是该语言的一个...

    scala + mybatis 数据库查询

    Scala是一种强大的多范式编程语言,它结合了面向对象和函数式编程的特性。MyBatis则是一款流行的Java持久层框架,主要用于简化数据库操作。在本项目中,"scala + mybatis 数据库查询",我们将探讨如何将Scala与...

    scala-2.12.10.tgz

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的概念。Scala运行在Java虚拟机(JVM)上,并且可以充分利用Java的生态系统。`scala-2.12.10.tgz`是一个针对Linux操作系统的Scala安装包,它的版本号...

    scala实战高清讲解

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性,使得它在处理并发和大数据分析方面表现出色。"Scala实战高清讲解"这本书是学习Scala的宝贵资源,尤其对于那些希望深入理解并提升Scala技能的...

    Scala语法简明教程

    ### Scala语法简明教程知识点详解 #### Scala语言简史 - **诞生历史**:Scala起源于瑞士联邦理工学院洛桑(EPFL),由Martin Odersky在2001年开始设计,其灵感来源于Funnel——一种结合了函数式编程思想与Petri网...

    最好的scala学习 课件

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性,被广泛应用于大数据处理领域,特别是与Apache Spark相结合时。本课件是针对Scala学习者精心准备的资源,旨在帮助你深入理解和掌握Scala的...

    scala学习源代码

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性。这个"scala学习源代码"的压缩包文件很可能包含了用于教学或自我学习Scala编程的基础示例。让我们深入了解一下Scala语言的关键概念和特性。 ...

    scala-2.11.8.rar

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性。这个"scala-2.11.8.rar"压缩包包含了Scala语言的2.11.8版本的源代码,这对于理解Scala的工作原理、学习高级编程技巧以及进行自定义扩展或...

    学习scala好的项目

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性,被广泛应用于大数据处理、分布式计算和Web开发等领域。Spark是基于Scala构建的大数据处理框架,其高性能和易用性使得Scala在大数据领域备受...

    windows版scala-2.11.12.zip

    在这个"windows版scala-2.11.12.zip"压缩包中,包含的是Scala 2.11.12版本的Windows兼容安装文件,这是Scala的一个稳定版本,适用于开发人员在Windows操作系统上进行Scala编程。 Scala 2.11.x系列是Scala的一个主要...

    scala-2.11.12 win msi 安装包

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的概念。这个压缩包提供的文件是"scala-2.11.12 win msi 安装包",适用于Windows操作系统,版本号为2.11.12。这个版本的Scala是官方发布的,虽然原...

Global site tag (gtag.js) - Google Analytics