scala的各种符号含义
1、:::运算符号,表示的是List的连接操作,比如:
val a=List(1,2);val b=List(3,4) val c=a:::b;
代替了java中的add方法;
2、::表示普通元素和List的连接操作:
val d=5
val f=List(6,7)
val g=d::f
则结果是List(5,6,7),1::b操作,::是右侧对象[b]的方法,::左侧的运算数是::方法的参数,
所以1::b的含义是b.::(1)[list.add(1)]
3、scala的+、-、*、/都是函数,比如2+2,实质上是对象2调用+函数,传入参数是2,等价于(2).+(2)
4、=>比较复杂,有四种使用场景
1>匿名函数
//匿名函数定义一个函数变量a
var a =(b:Int)=>a+1;
//给一个高阶函数,传递一个函数
val ListNew=List(1,2,3).map{(a:Int)=>a*2}
--匿名函数定义,=>左边是参数,右边是函数实现体--
2>.表示函数返回类型(function Type)
//定义函数
def double(x:Int):Int=x*2
输出:double:(x:Int)Int
//定义一个函数变量
var x:(Int)=>Int=double
输出:x:Int=>Int=<function1>
函数调用:x(2) 输出结果是:res1:Int=4
函数double的类型就是(x:Int)=>Int或者Int=>Int.左边是方法返回值类型,右边是方法返回值的类型;
3>case语句
val x=1;valy=2;
val max=x>y match{
case true=>x
case false=>y
}
在模式匹配match和try-catch都用“=>”表示输出的结果或返回的值
4>传名参数
传名参数在函数调用前表达式不会被求值,而是会包裹成一个匿名函数作为函数的参数
传递下去,例如参数类型为无参函数的参数就是传名参数。
//函数double
def doubles(x:=>Int)={
println(x)
x*2
}
//调用函数
doubles(3) 返回值为res2:Int=6
//定义函数
def f(x:Int):Int={println(s"Calling f($x)")
x+1
}
//调用函数
doubles(f(3)) 输出res9=8;
5、_N(下划线数字)
val value=(9,'3dfsdfdafsdf');
println(value._1);//第一个元素
_N用于访问元组的第N个元素(N>=1),元组不同与List/Array,元组中的元素可以不同
6、->是所有scala都有的方法,eg:A->B返回一个二元组(A,B)
<-:是一个函数,被使用在for循环中 ,每次遍历生成一个新的val对象,而不是var对象。