一、scala的基础语法
1、可以直接返回结果与其数据类型,内置变量:可以在后面继续使用这个变量以及存放的值,也可以使用tab键自动补全。
2、申明变量时使用val不可以改变值,使用var可以改变值,在scala程中推荐使用val,当传输数据量大的时候,使用var可能会发生数据被更改的错误
3、函数的定义与调用
进入:paste状态,定义一个函数,然后使用Ctrl+D退出保存,可以再外面调用这个函数,也可以在内部调用,在Scala中定义函数时,需要定义函数的函数名、参数、函数体。Scala要求必须给出所有参数的类型,但是不一定给出函数返回值的类型,只要右侧的函数体中不包含递归的语句,Scala就可以自己根据右侧的表达式推断出返回类型。
4、在代码块中定义包含多行语句的函数体,如果函数体中有多行代码,则可以使用代码块的方式包裹多行代码,代码块中最后一行的返回值就是整个函数的返回值。
5、递归函数:在函数体内递归调用函数自身,必须手动给出函数的返回类型
[例如该函数没有手动给出返回值类型就会报错]
有了返回值类型得到结果,计算出来经典的斐波那契数列当n=10的时候的值
9 + 8; 8 + 7 + 7 + 6; 7 + 6 + 6 + 5 + 6 + 5 + 5 + 4; …
6、默认参数:在定义函数时有时候希望使用参数自身默认的值
定义函数SayHello第二个函数和第三个函数都有默认值,如果不赋给其值就以默认值输出
但如果都赋值,就以新赋的值输出
7、变长参数
在scala中有时候需要将函数定义为参数个数可以改变的形式,使用变长参数定义函数
直接调用该函数写入要计算的值
8、如果想将一个已有的序列直接调用变长参数函数是不可以的,需要使用scala的语法将参数定义为序列,然后让scala解释器能够识别
基于上面定义的函数sum1还可以使用如上语句调用
9、过程:函数体包裹在花括号里面,没有使用“=”连接,这样的函数的返回值类型是Unit,这样的函数称为过程
例如:
(1)def sayHello(name: String) = "Hello, " + name
(2)def sayHello(name: String) { print("Hello, " + name); "Hello, " + name }
(3)def sayHello(name: String): Unit = "Hello, " + name
10、lazy值:当讲一个变量申请为lazy,则只有第一次使用该变量时,变量对应的表达式才会发生计算。
即使该路径下的文件不存在,但是还没有调用,因此不会报错
当第一次调用时因为没有该路径下的文件才会报错
11、异常:异常的处理和捕获与java相似