scala-基础

1.不带参数且不改变当前对象的Scala方法通常不使用圆括号,比如:"Hello".distinct
2.Scala没有提供++和--操作符,需要使用+=1 或者 -=1
3.在Scala中,_字符是通配符,类似于Java中的*,比如:import scala.math._,使用scala开头的包时,可以省略scala前缀,
例如:import math._等同于import scala.math._,而math.sqrt(-2)等同于scala.math.sqrt(-2)
4.一个类对应有一个伴生对象,其方法就跟Java中的静态方法一样

5.scala不刻意区分基本类型与引用类型,公共超类是Any,Unit类似于Java与C++中的Void,用圆括号()表示,比如,因为scala中每个表达式都应该有某种值,不带else的if语句等同于:

if(x > 0) 1 else ()

6.可以用:a + b 作为以下代码的简写:a.方法(b),比如:1.to(10) 可以写成;1 to 10;a+b可以写成a.+(b)

7.val定义一个常量,var声明值可变的变量
8."Hello"(4)是如下语句的简写:"Hello".apply(4),可以把"Hello"(4)这种用法当做是()操作符的重载形式,它背后

实现的原理是一个名为apply的方法

9.非递归函数不需要指定返回类型,Scala编译器可以通过=符号右侧的表达式类型推断出返回类型,对于递归函数必须指定返回类型,

变长参数:

def sum(args: Int*)={

var result = 0

for(arg <-  args) result += arg

result

}

可以使用任意多的参数来调用该函数,val s = sum(1,2,3,4,5,6,7),如下的写法不对:

val s = sum(1 to 7)

如果sum函数被调用时传入的是单个参数,那么该参数必须是单个整数,而不是一个整数区间,解决这个问题的办法是告诉编译器你希望这个参数被当做参数序列处理,追加上:_*,就像这样:

val s = sum(1 to 7: _*)

不返回值的函数叫过程,包含函数体的花括号前面没有=号


(以上主要是《快学scala》的读书笔记,记录一下加强记忆)

你可能感兴趣的:(scala)