- 浏览: 599417 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (669)
- oracle (36)
- java (98)
- spring (48)
- UML (2)
- hibernate (10)
- tomcat (7)
- 高性能 (11)
- mysql (25)
- sql (19)
- web (42)
- 数据库设计 (4)
- Nio (6)
- Netty (8)
- Excel (3)
- File (4)
- AOP (1)
- Jetty (1)
- Log4J (4)
- 链表 (1)
- Spring Junit4 (3)
- Autowired Resource (0)
- Jackson (1)
- Javascript (58)
- Spring Cache (2)
- Spring - CXF (2)
- Spring Inject (2)
- 汉字拼音 (3)
- 代理模式 (3)
- Spring事务 (4)
- ActiveMQ (6)
- XML (3)
- Cglib (2)
- Activiti (15)
- 附件问题 (1)
- javaMail (1)
- Thread (19)
- 算法 (6)
- 正则表达式 (3)
- 国际化 (2)
- Json (3)
- EJB (3)
- Struts2 (1)
- Maven (7)
- Mybatis (7)
- Redis (8)
- DWR (1)
- Lucene (2)
- Linux (73)
- 杂谈 (2)
- CSS (13)
- Linux服务篇 (3)
- Kettle (9)
- android (81)
- protocol (2)
- EasyUI (6)
- nginx (2)
- zookeeper (6)
- Hadoop (41)
- cache (7)
- shiro (3)
- HBase (12)
- Hive (8)
- Spark (15)
- Scala (16)
- YARN (3)
- Kafka (5)
- Sqoop (2)
- Pig (3)
- Vue (6)
- sprint boot (19)
- dubbo (2)
- mongodb (2)
最新评论
1. 表示函数的类型(Function Type)
函数double的类型就是 (x: Int) => Int 或者 Int => Int
备注: 当函数只有一个参数的时候,函数类型里面括起来函数参数的括号是可以省略的。
使用函数的类型,就可以定义函数变量(Function Value/Function Variable)
那么现在定义一个函数变量:
2. 匿名函数(Anonymous functions/Function Literals/Lambda)
例如:通过匿名函数定义一个函数变量xx
或者,给一个高阶函数,传递一个函数:
3. By-Name Parameters
假设有如下两个函数:
那么对于函数doubles而言,它的参数x就是by-name的。如果调用doubles的时候,直接给个普通的值或者非函数变量。那么doubles的执行结果就跟普通的函数没有区别。但是当把一个返回值为Int类型的函数,例如f(2),传递给doubles的时候。那么f(2)会被先计算出返回值2,返回值2传入doubles参与运算。运算完成以后,f(2)会被doubles在执行以后,再调用一遍。
4. case语句
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 在Intellij中搭建Scala环境(jdk8,scala2.11.4)
2017-06-02 16:33 14431.打开Intellij然后点击File->Plugin ... -
Scala Partial Functions(偏函数)学习
2017-04-24 10:54 344如果你想定义一个函数,而让它只接受和处理其参数定义域范围内的子 ... -
Scala 样本类(case class)和模式匹配(match)学习
2017-04-20 18:20 833样本类(case clas)和模式 ... -
Scala 作业题练习纪录
2017-04-20 14:39 10031.用reduceLeft获取集合中最大元素 println ... -
Scala 闭包理解
2017-04-20 13:57 663闭包是一个函数,返回值依赖于声明在函数外部的一个或多个变量。 ... -
Scala 各种符号的含义(->,:::,::,<-,=>)
2017-04-20 09:50 651:::运算符 :::(三个冒号)表示List的连接操作,比如: ... -
Scala filter方法过滤集合元素(获取集合中的元素)
2017-04-19 14:44 2079Problem 你想要筛选出集合中的一些元素形成一个新的集合 ... -
Scala apply方法学习(类和对象都存在apply方法)
2017-04-19 10:18 731Scala比Java更面向对象的一个方面是Scala没有静态成 ... -
Scala Map(映射)学习
2017-04-18 09:20 431Map(映射)是一种可迭代的键值对(key/value)结构。 ... -
Scala 元组Tuple学习
2017-04-17 16:12 641元组是Scala提供的一种 ... -
Scala 函数之map(返回集合)、reduce、flatMap、zip和foreach(无返回值)学习
2017-04-17 15:04 2231map和flatMap的区别 object collect ... -
Scala 下划线(_)的多种应用场景学习
2017-04-13 20:00 5881、作为“通配符”,类似Java中的*。如import sca ... -
Scala mkString方法(把一个集合转化为一个字符串)
2017-04-13 19:34 1207Problem 如果你想要把集合元素转化为字符串,可能还会添加 ... -
Scala yield案例 (for 循环和 yield 的例子)
2017-04-13 18:42 630下面是摘自 《Programming in Scala》关于 ... -
Scala 基本概念学习
2017-04-13 14:40 537Type Inference类型推断 当你声明的任何变量时,你 ...
相关推荐
1. =>符号:匿名函数 在Scala中,=>符号用于定义匿名函数。匿名函数是一种没有名称的函数,可以将其赋值给一个变量。例如: ```scala (x: Int) => x + 1 ``` 等同于Java中的方法: ```java public int function...
- `=>`:用于定义函数类型,如`val add = (x: Int, y: Int) => x + y`。 - `Int=`:用于模式匹配中的类型检查。 - `_`:可以作为通配符使用,也用于部分应用函数或作为占位符。 #### 三、进一步学习资源 - **...
例如:(x: Int) => x * x 表示一个接受整型参数并返回其平方的匿名函数。 4. Int= 是类型注解,表明一个变量或表达式是Int类型。 5. _ 在Scala中用作通配符或占位符。它可以用来表示忽略某个参数或变量。 另外,...
匿名函数,即lambda表达式,可以用箭头符号`(x: Int) => x + 1`表示,它们可以作为参数传递或存储为变量。 4. **对象和类**:Scala是面向对象的语言,但它提供了比Java更灵活的对象模型。类和对象可以结合使用,...
- **符号作为方法名**:为了提高代码可读性和表达力,Scala允许使用特殊字符作为方法名,如`def √(x: Double) = Math.sqrt(x)`。 - **类型参数的表示**:在Scala中,`和 `>` 通常用于泛型表示,因此使用 `[` 和 `]`...
- Scala 使用 `=>` 符号定义匿名函数,比如 `(x: Int, y: Int) => x + y`,这与 Java 8 引入的 Lambda 表达式类似,但 Scala 的语法更简洁。 6. **类与对象**: - Scala 中的类和对象更紧密地结合在一起,单例...
- **定义函数**:使用`def`关键字也可以定义函数,但在Scala中,函数通常指代的是匿名函数或lambda表达式。 - **方法和函数的区别**:方法是类的一部分,而函数是独立存在的。通过`_`符号可以将方法转换为函数。 **...
2. 匿名函数:使用`_`符号和箭头`=>`可以定义简化的匿名函数,如`x => x * x`。 3. 偏函数:部分应用函数(Partial Function)只处理特定类型的输入,可以与其他函数组合。 4. 管道操作符:`|>`允许将一个函数应用于...
λ函数(匿名函数)是Scala中的一个重要概念,它们使用`=>`符号定义。 3. **面向对象编程**:尽管Scala具有函数式编程特性,但它也完全支持面向对象编程。类、对象、继承、多态等概念在Scala中都有体现。Singleton...
在Scala中,方法是类的一个成员,而函数是匿名的、可传递的值。虽然两者在语法上非常相似,但在某些场景下,函数因其可传递性而更为灵活。 ##### 4.7.4 将方法转换成函数 使用下划线(`_`)符号,可以将方法转换为...
Scala是一种多范式编程语言,它融合了面向对象和函数式编程的概念,使其在现代软件开发中具有广泛的应用。以下是对Scala的一些关键知识点的详细解释: 1. **基础语法**:Scala的基础语法包括常量(如`val`声明的不...
它允许在模式匹配时使用特殊符号,如`@`。 **1.4 空白与注释** - 空白是指空格、制表符等。Scala中的空白主要用于代码的格式化,对于代码的逻辑没有影响。 - 注释分为两种:单行注释(`//`)和多行注释(`/* ... *...
Lambda表达式则是一种简洁的匿名函数定义方式。 - **内联函数**:Kotlin的内联函数用于避免lambda表达式的额外开销,提高性能。 #### 协程 - **协程**:Kotlin的协程是一种轻量级的线程管理方式,可以提高异步编程...
- **Lambda 表达式**:Kotlin 使用简洁的箭头符号 -> 来定义匿名函数,常用于函数式编程。 4. **类与对象** - **类定义**:Kotlin 的类支持构造函数、初始化块、属性访问器等。 - **接口**:类似于 Java 的接口...