rss· 投稿· 设为首页· 加入收藏· 繁體版
当前位置: 火魔网 » 程序开发 » Scala

scala学习(二):最基本的语法

scala术语:
参数化:参数化的意思是在你创建实例的时候“设置”它。通过 把加在括号里的对象传递给实例的构造器的方式来用值参数化实例。 例如,下面的 Scala 代码实例化一个新的java.math.BigInteger并使用值"12345"参数化: val big = new java.math.BigInteger("12345") 1.实例化对象或类实例 用new关键字。 2.如果方法仅带一个参数,你可以不带点或括号的调用它。 for (i <- 0 to 2)
print(greetStrings(i)) 本例中的to实际上是带一个Int参数的方法。代码 0 to 2被 转换成方法调用(0).to(2)。 请注意这个语法仅在你显式指定方法调用的接受者时才起作 用。不可以写 pringln 10,但是可以写成“Console println 10”。 3.Scala里的操作符
从技术上讲,Scala 没有操作符重载,因为它根本没有传统意义上的操作符。取而代之的 是,诸如+,-,*和/这样的字符可以用来做方法名。因此,当第一步里你在Scala 解释器 里输入1 + 2,你实际上正在Int对象 1上调用一个名为+的方法,并把2当作参数传给它。 如图3.1 所示,你也可以使用传统的方法调用语法把1 + 2替代写成(1).+(2)。 4.为什么数组在 Scala 里是用括号访问的 与 Java比 Scala 很少有特例。数组和 Scala 里其他的类一样只是类的实现。当你在一个或多个值 或变量外使用括号时,Scala会把它转换成对名为apply的方法调用。于是greetStrings(i) 转换成greetStrings.apply(i)。所以Scala 里访问数组的元素也只不过是跟其它的一样 的方法调用。这个原则不仅仅局限于数组:任何对某些在括号中的参数的对象的应用将都 被转换为对apply 方法的调用。当然前提是这个类型实际定义过apply方法。所以这不是 一个特例,而是一个通则。 与之相似的是,当对带有括号并包括一到若干参数的变量赋值时,编译器将把它转化为对 带有括号里参数和等号右边的对象的update方法的调用。例如,greetStrings(0) = "Hello" greetStrings.update(0, "Hello") 5.更好的创建并初始化数组的方法
val numNames = Array("zero", "one", "two")
或者 val numNames2 = Array.apply("zero", "one", "two") 前面介绍的方法:
val greetStrings = new Array[String](3)
greetStrings(0) = "Hello"
greetStrings(1) = ", "
greetStrings(2) = "world!\n" 6.scala的List
说到共享相同类型的不可变对象序列,Scala 的List 类才是。 7.在scala里创建一个List
创建一个List很简单:val oneTwoThree = List(1, 2, 3)
8.List有个叫“:::”的方法实现叠加功能。 val oneTwo = List(1, 2)
val threeFour = List(3, 4)
val oneTwoThreeFour = oneTwo ::: threeFour
println(oneTwo + " and " + threeFour + " were not mutated.")
println("Thus, " + oneTwoThreeFour + " is a new List.") 如果你执行这个脚本,你会看到: 
List(1, 2) and List(3, 4) were not mutated.
Thus, List(1, 2, 3, 4) is a new List. 9.List最常用的操作符是发音为“cons”的‘::’。Cons 把一个新元素组合到已有List 的最前端,然后返回结果List。 若执行这个脚本:
val twoThree = list(2, 3)
val oneTwoThree = 1 :: twoThree
println(oneTwoThree) 你会看到:
List(1, 2, 3) 10.一个要记住的规则
如果一个方法被用作操作符标注,如a * b,那么方法被左操作数调用,就像a.*(b)――除非方法名以冒号结 尾。这种情况下,方法被右操作数调用。因此,1 :: twoThree 里,::方法被twoThree 调用,传入1,像这 样:twoThree.::(1)。 11.Nil关键字
定义空类的捷径是Nil。下面是初始化一个新的List的不错的方法:val oneTwoThree = 1 :: 2 :: 3 :: Nil
顶一下
(0)
踩一下
(0)