1:for循环中 i until j 的区间是[ i , j )。
2:创建多个字符串;
在scala中可以三引号创建多行字符串,例如:
val str = ''' 创建
多行
字符串'''
但是这样创建的话,输出的字符串也就是没有对齐的,所以可以使用一个官方推荐的方法,就是stripMargin方法,但是第二行后的每一行必须以|开头,如果不想使用" | "的话,也可以使用任意字符,不过需要在stripmargin方法中加入该字符作为参数,如果想将多行归并到同一行的话,只需要在stripMargin后面加上replace("\n"," "),即可,也就是把每一行后面的换行符换成一个空格.
使用三引号创建多行字符串还有一个好处,就是可以包容字符串本身的单引号和双引号,这样就免去转义的麻烦.
3:yield:yield一般是在循环语句后加的,它的作用是将每一次循环的结果暂放在一个临时的存放区里,当循环结束后,将这个临时存放区的所有元素一一个集合的方式返回.
4;getOrElse():如果本方法前面的方法成功调用,则返回前方法的值,如果前方法没有返回值,调用失败,则返回该方法的值作为默认值.
5:val 不可变性只是说引用地址不能变,但是引用地址的对象本身内容可以改变,当然,这需要对象本身是个可变的.
6:_$eq方法:在对类中变量进行改变的时候,我们通常只需要写例如:p.name = "wang";但这其实是scala的语法糖,通过反编译就知道其实在底层调用的是name_$eq方法,而我们在代码中直接写p.name_$eq("wang")其实也是可以的,它和p.name="wang"是等价的.
7:父类子类公用的参数,不要设置为var
8:集合的.indices是指返回一个Range从0到length-1