标签:style class 使用 strong string 类
Chapter1 and Chapter2
方法定义:
def methodName(param1: ParamType, param2: ParamType2, [maybe more]): ReturnType = {
// method body
}
函数式编程中一个约定俗成的说法就是,方法会返回一个值,不然一个方法的存在就是在产生副作用,而避免副作用是函数式编程的一个初衷。
数组的访问:
scala中的数组是Array[ContentType],声明一个数组的时候需要指定数组的大小和所包含的元素的类型:
val arr = new Array[Int](3)
or
val arr = Array[Int](3)
or
val arr = Array(1, 2, 3) //直接声明并初始化
以上两种方式都能够产生一个数组对象arr,但是他俩产生对象的方式不同,new Array[Int](3)使用的是构造函数生成一个对象,而Array[Int](3)是调用的Array[Int]的apply方法返回一个arr数组对象。
something in English: In scala, we can instantiate objects, or classes, using new. When you instantiate an object in scala, you can parameterize(确定...的参数) it with values and types.
几个有特殊约定的方法,但是他们仅仅是普通的方法而已:
apply(param1:ParamType),这个方法存在于一个class里面的话,那么这个类的对象(test)就可以调用test(param),实际让调用的就是test.apply(param)方法。
update(param:ParamType),这个方法是一个对象方法update(param:ParamType),它对应着test(param) = 12中的=。
1::intList,这个::符号读作cons,它是一个right operand(右操作数),也就是说方法的调用者是intList。标准是:如果一个方法以:结尾的话,那么这个方法就是一个右操作数。
各式各样的for:
for (arg <- args) { println(arg) } // arg是一个不可变的参数
for (i <- 0 to 2) { println(args(i)) } // i是一个不可变的参数
args.foreach(arg => println(arg)) // 据说这是最函数式编程的方式
集中缩略形式:
如果一个方法参数仅有一个语句,并且仅仅包含一个参数,那么参数可以省略
args.foreach(arg => println(arg)) == args.foreach(println)
如果一个方法仅有一个参数,并且方法的调用者明确指定,那么. 和 () 可以省略
1 + 2 == (1).+(2)
元组
元组的访问是._X,且X是从1开始的,one-based。
Mutable Objects
Array
Immutable Objects
List, Tuple,
// by default, the Set will be immutable set,
var testSet = Set(1, 2, 3)
// testSet is a var, so it can be reasigned. testSet += 4 equals testSet = testSet + 4
testSet += 4
testSet + 4 实际上是会返回一个新的对象,然后赋值给testSet,而不是简单地把4追加到原来的Set里面。
import scala.collection.mutable.Set
val testSet = Set(1, 2, 3)
// mutable set 有+=这个方法,这个方法会把新的元素追加到set中,并返回原来的对象。
testSet += 4
也就是说,testSet并没有被重新创建,而只是在原来的set中追加了一个新的元素。
val指的并不是指向的对象不能变化,而只是指向的地址不能变化。
说的更直白一点应该就是:val指向的对象不允许重新赋值,而var指向的对象可以重新赋值。
Because the set is mutable, there is no need to reassign movieSet, which is why it can be a val.
By contrast, using += with the immutable set in Listing 3.5 required reassigning jetSet, which is why it must be a var.
创建一个新的Set或者Map
如果是空的:
val testSet = Set[Int]() //这个()是必须的
val testMap = Map[Int, String]() // 同上
Programming In Scala Reading Note 1,布布扣,bubuko.com
Programming In Scala Reading Note 1
标签:style class 使用 strong string 类
原文地址:http://www.cnblogs.com/voctrals/p/3805543.html