Scala 符号化
-
“<-”符号:这个符号<-用在什么地方,比如用于for循环,
<-用于遍历集合对象(可遍历对象)B,在每次遍历的过程中,生成一个新的对象A,这个A是val,而不是var,然后对循环体中对A进行处理,<-在Scala中称为generator。 不需要显式的指定A的类型,因为Scala使用自动推导的方式根据B的元素类型得出A的类型for (arg <- args) //用于循环 println(arg) for (i <- 0 to 2) print(greetStrings(i))
-
“->”方法是所有Scala对象都有的方法,比如A->B,->方法调用的结果是返回一个二元的元组(A,B)
这个符号用于什么地方,比如map映射
Map(映射)是一种可迭代的键值对(key/value)结构。
// Map 键值对演示
val colors = Map("red" -> "#FF0000", "azure" -> "#F0FFFF")//此为Map 映射,看成字段就行
map映射与map函数的区别
同时有一个小小的不同:
如果刚接触map函数会让我们特别的困惑和难懂。
map函数:
函数式编程都有一个map函数,map函数就像一个加工厂,传入一个函数,利用这个函数将集合里的每一个元素处理并将结果返回。
aList.map(processFunc)//就这么简单,aList中的每一个元素将会变成processFunc的返回值。 这个processFunc一般都是匿名函数,因为用过一次后就用不到了。val l = List(1,2,3) var ll = l.map(x => x*x)//返回 ll=(1,4,9)
-
"=>"这个其实是Scala的匿名函数。
左边是参数,右边是函数体。在我们印象中,函数体一般都是在大括号中,而这里真让我们难以理解。
总之:方法参数=> 方法体这时候我们需要明白这是匿名函数
这就是Scala不走寻常路,而且其它的很多地方,都是这个样子。比如下面的函数定义等等。这里先给大家认识下Scala的匿名函数var ll = l.map(x => x*x)//x=>x*x 就是匿名函数
对于右箭头,还有一个地方用到就是
匹配模式语句case与后面表达式的分隔符
例如a match { case 1 => "match 1" case _ => "match _" }
-
进一步补充:
:::运算符
:::(三个冒号)表示List的连接操作,比如:
val
a
=
List(``1``,
2``)
val
b
=
List(``3``,
4``)
val
c
=
a
:::
b
其中a,b保持不变,a和b连接产生一个新表List(1,2,3,4),而不是在a上面做add操作。
Scala中的List不同于Java的List,Java声明final List javaList,表示javaList一旦初始化,那么不能再为它赋值,但是它其中的元素可以变化,
::运算符
::(两个冒号)表示普通元素与List的连接操作,比如:
val a = 1
val b = List(3, 4)
val c = 1 :: b
则c的结果是List(1,3,4),需要注意的是,1:: b操作,::是右侧对象的方法,即它是b对象的方法,而::左侧的运算数是::方法的参数,所以1::b的含义是b.::(1) -
“_ ”下划线比较多 请参考http://www.jianshu.com/p/52b933ecbc06