`

Scala 符号 => 的用法(匿名函数(x:Int)=>x+1)

 
阅读更多
1. 表示函数的类型(Function Type)

def getMap(f:(Int)=>Int,m:Int,n:Int)={
    val list = m to n 
    list.map(x=>(x,f(x))).foreach(println _)
}
​
getMap((x:Int)=>x*x,-5,5)


def double(x: Int): Int = x*2


函数double的类型就是 (x: Int) => Int 或者 Int => Int

备注: 当函数只有一个参数的时候,函数类型里面括起来函数参数的括号是可以省略的。

使用函数的类型,就可以定义函数变量(Function Value/Function Variable)

那么现在定义一个函数变量:

var x : (Int) => Int = double


2. 匿名函数(Anonymous functions/Function Literals/Lambda)

例如:通过匿名函数定义一个函数变量xx

var xx = (x: Int) => x + 1


或者,给一个高阶函数,传递一个函数:

val newList = List(1,2,3).map { (x: Int) => x * 2 }


3. By-Name Parameters

假设有如下两个函数:

def doubles(x: => Int) = {
    println("Now doubling " + x)
    x*2   
}
 
def f(x: Int): Int {
    println(s"Calling f($i)")
    i
}


那么对于函数doubles而言,它的参数x就是by-name的。如果调用doubles的时候,直接给个普通的值或者非函数变量。那么doubles的执行结果就跟普通的函数没有区别。但是当把一个返回值为Int类型的函数,例如f(2),传递给doubles的时候。那么f(2)会被先计算出返回值2,返回值2传入doubles参与运算。运算完成以后,f(2)会被doubles在执行以后,再调用一遍。

4. case语句

val x = 10; val y = 20
    x: Int = 10
    y: Int = 20
val max = x > y match {
     case true => x
     case false => y
}
max: Int = 20


分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    scala中常用特殊符号详解

    1. =>符号:匿名函数 在Scala中,=>符号用于定义匿名函数。匿名函数是一种没有名称的函数,可以将其赋值给一个变量。例如: ```scala (x: Int) => x + 1 ``` 等同于Java中的方法: ```java public int function...

    about云spark开发基础之Scala快餐第二版.pdf

    - `=>`:用于定义函数类型,如`val add = (x: Int, y: Int) => x + y`。 - `Int=`:用于模式匹配中的类型检查。 - `_`:可以作为通配符使用,也用于部分应用函数或作为占位符。 #### 三、进一步学习资源 - **...

    spark开发基础之Scala快餐.pdf

    例如:(x: Int) => x * x 表示一个接受整型参数并返回其平方的匿名函数。 4. Int= 是类型注解,表明一个变量或表达式是Int类型。 5. _ 在Scala中用作通配符或占位符。它可以用来表示忽略某个参数或变量。 另外,...

    Scala 开发教程.docx

    匿名函数,即lambda表达式,可以用箭头符号`(x: Int) => x + 1`表示,它们可以作为参数传递或存储为变量。 4. **对象和类**:Scala是面向对象的语言,但它提供了比Java更灵活的对象模型。类和对象可以结合使用,...

    Design Of Scala中文

    - **符号作为方法名**:为了提高代码可读性和表达力,Scala允许使用特殊字符作为方法名,如`def √(x: Double) = Math.sqrt(x)`。 - **类型参数的表示**:在Scala中,`和 `>` 通常用于泛型表示,因此使用 `[` 和 `]`...

    scala-for-java-developers:Java开发人员尝试理解Scala的简单示例。 彼此之间的关键句法差异

    - Scala 使用 `=>` 符号定义匿名函数,比如 `(x: Int, y: Int) => x + y`,这与 Java 8 引入的 Lambda 表达式类似,但 Scala 的语法更简洁。 6. **类与对象**: - Scala 中的类和对象更紧密地结合在一起,单例...

    scala编程基础

    - **定义函数**:使用`def`关键字也可以定义函数,但在Scala中,函数通常指代的是匿名函数或lambda表达式。 - **方法和函数的区别**:方法是类的一部分,而函数是独立存在的。通过`_`符号可以将方法转换为函数。 **...

    Scala基础

    2. 匿名函数:使用`_`符号和箭头`=>`可以定义简化的匿名函数,如`x => x * x`。 3. 偏函数:部分应用函数(Partial Function)只处理特定类型的输入,可以与其他函数组合。 4. 管道操作符:`|>`允许将一个函数应用于...

    Scala向导(前八章)

    λ函数(匿名函数)是Scala中的一个重要概念,它们使用`=>`符号定义。 3. **面向对象编程**:尽管Scala具有函数式编程特性,但它也完全支持面向对象编程。类、对象、继承、多态等概念在Scala中都有体现。Singleton...

    scala的操作笔记

    在Scala中,方法是类的一个成员,而函数是匿名的、可传递的值。虽然两者在语法上非常相似,但在某些场景下,函数因其可传递性而更为灵活。 ##### 4.7.4 将方法转换成函数 使用下划线(`_`)符号,可以将方法转换为...

    Scala-简易详解文章

    Scala是一种多范式编程语言,它融合了面向对象和函数式编程的概念,使其在现代软件开发中具有广泛的应用。以下是对Scala的一些关键知识点的详细解释: 1. **基础语法**:Scala的基础语法包括常量(如`val`声明的不...

    Scala语言规范

    它允许在模式匹配时使用特殊符号,如`@`。 **1.4 空白与注释** - 空白是指空格、制表符等。Scala中的空白主要用于代码的格式化,对于代码的逻辑没有影响。 - 注释分为两种:单行注释(`//`)和多行注释(`/* ... *...

    Kotlin学习文档

    Lambda表达式则是一种简洁的匿名函数定义方式。 - **内联函数**:Kotlin的内联函数用于避免lambda表达式的额外开销,提高性能。 #### 协程 - **协程**:Kotlin的协程是一种轻量级的线程管理方式,可以提高异步编程...

    learn-kotlin:kotlin 学习笔记

    - **Lambda 表达式**:Kotlin 使用简洁的箭头符号 -> 来定义匿名函数,常用于函数式编程。 4. **类与对象** - **类定义**:Kotlin 的类支持构造函数、初始化块、属性访问器等。 - **接口**:类似于 Java 的接口...

Global site tag (gtag.js) - Google Analytics