scala是面向函数和对象的编程基于Java的JDK和JVM是一个类的JAVA的语言
调用方法和函数
Scala 中的+ - * / %等操作符的作用与 Java 一样,位操作符 & | ^ >> <<也一样。
只是有一点特别的:这些操作符实际上是方法。例如:
a + b
是如下方法调用的简写:
a.+(b)
a 方法 b 可以写成 a.方法(b)
定义函数:
val f1 = (x:Int,y:Int) => x + y
可以像任何其他数据类型一样被传递和操作 案例:首先定义一个方法,再定义一个函数,然后将函数传递到方法里面
定义方法:
Scala中的+ - * / %等操作符的作用与Java一样,位操作符 & | ^ >> <<也一样。只是有一点特别的:这些操作符实际上是方法
def f1 (x: Int,y: Int): Int=x*y
其中
def:是定义方法的关键字
f1:方法名
(x: Int,y: Int):参数列表
Int :方法返回值类型
x*y:方法体
方法转成函数 val f1 = m0 _ 使用下划线将m0方法转换成f1函数
匿名函数: 在语句中可以不给函数命名并且可以判断函数数据类型即不用声明函数类型
柯里化: 把原来接受多个参数的函数变换成接受一个参数的 函数过程,并且返回接受余下的参数且返回结果为一个新函数的技术
scala> def first(x:Int)=(y:Int)=>x+y
first: (x: Int)Int => Int
然后我们使用参数 1 调用这个函数来生成第二个函数:
scala> val second =first(1)
second: Int => Int = <function1>
scala> second(2)
res2: Int = 3
闭包: 闭包是一个函数,返回值依赖于声明在函数外部的一个或多个变量 最多定义22个参数
val y=10
//变量 y 不处于其有效作用域时,函数还能够对变量进行访问
val add=(x:Int)=>{x+y}
隐式转换:implicit implicit -v在cmd中可查看有69个隐式转换 1 to 10 这里的to相当于一个方法 1.to(10) 1作为实例调用to方法传入10这个参数,int类型有没有to方法没有就去隐式转换中找将int隐式转换成richint调用to方法 主要解耦 递归必须要声明返回值类型