Scala 中方法和函数有自己的定义,不像java中那样就方法就是函数
方法和函数是scala比较重要的一点,如何能够快速理解呢,下面是我的分享:
- 定义方法:
方法关键字,方法名,方法参数,返回值类型,最后一个是方法体
def m1(x:Int):Int = {X*X}
这是方法的定义
下面是在编译器中的代码:
scala> def sayHello =println("hello")
sayHello: Unit
scala> sayHello
hello
//方式一:方法时可以没有参数的,但是如果你方法名后面没有写()小括号,这时你如果加上小括号,会报错 例如:
scala> sayHello()
<console>:9: error: Unit does not take parameters
sayHello()
//方式二:在方法名后面加上() 这样可以直接使用方法名 或者使用 方法名() 小括号
scala> def sayHello() =println("hi")
sayHello: ()Unit
scala> sayHello()
hi
scala> sayHello
hi
//有一个小的区别是如果你定义的时候没有加括号,调用加括号会报错
//定义加括号,调用可加可不加括号
2,定义函数:
函数是头等公民
Val f1 =(参数名:参数类型)=>{函数体}
函数分为匿名函数和非匿名函数
下面是定义函数的截图:
方法和函数 符号不一样, 方法时 = 函数是=>
函数的第二种方式:
方法也可以直接转成函数:
scala> sayHello _
res207: () => Unit = <function0>
//这就成了函数了,可以使用函数来调用,函数和方法调用一样
3,两种方式定义
传值调用和传名调用
函数的参数是传值参数, 也就是说,参数的值在传递给函数之前确定
其实,在scala中,我们的方法或者函数的参数可以是一个表达式,也就是将一个代码逻辑传递给某个方法或者函数。
代码部分截图:
传名调用:
指的是函数:隐式的转换
将shuqian方法名称传递到方法的内部执行
这是结果:
object Calculate {
def add(a:Int,b:Int)={
a+b
}
//拥有三个参数 第一个是个函数,第二个第三个是Int参数
//第一个参数是:拥有2个Int类型参数,返回值是Int类型的函数
def add2(f:(Int,Int)=>Int,a:Int,b:Int)={
f(a,b) //f(1,2)=>a + b
}
def add3(a:Int=>Int,b:Int): Unit ={
a(b)+b
}
val f1 =(x:Int)=>x*10
val fxx=(a:Int,b:Int)=>a+b
def main(args: Array[String]): Unit = {
val r1=add(1,2+2)
add3(f1,6)
println(r1)
println(add2(fxx, 1, 2))
}
}
传值调用:
printByValue 参数为一个具体的数值
截图:
这些在平常的scala中比较常见的。