Scala 符号化

2018-03-06  本文已影响38人  冰冰大象
  1. “<-”符号:这个符号<-用在什么地方,比如用于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))
    
  2. “->”方法是所有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)
    
  3. "=>"这个其实是Scala的匿名函数。
    左边是参数,右边是函数体。在我们印象中,函数体一般都是在大括号中,而这里真让我们难以理解。
    总之:方法参数=> 方法体这时候我们需要明白这是匿名函数
    这就是Scala不走寻常路,而且其它的很多地方,都是这个样子。比如下面的函数定义等等。这里先给大家认识下Scala的匿名函数var ll = l.map(x => x*x)//x=>x*x 就是匿名函数
    对于右箭头,还有一个地方用到就是
    匹配模式语句case与后面表达式的分隔符
    例如

       a match {
     case 1 => "match 1"
     case _ => "match _"
     }
    
  4. 进一步补充:
    :::运算符
    :::(三个冒号)表示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)

  5. “_ ”下划线比较多 请参考http://www.jianshu.com/p/52b933ecbc06

上一篇下一篇

猜你喜欢

热点阅读