Block
代码块用于用于组织多个表达式。
Block也是一个表达式,其最终的求得的值是最后一个表达式的值。
写法1:
{exp1;exp2} //全部表达式卸载一行上面,表达式之间用;分号隔开
写法2:
{
exp1 //一个表达式一行
exp2 //末尾不写分号
...
}
函数
def functionName( param:ParamType, param1:ParamType1....):returnType={
//function body :expressions
}
返回值自动命名为res0,且类型时String类型的。这是标准写Scala函数的方法;
个人觉得Scala和Shell语言还是很像的,有Shell基础的人写起来应该更加简单一些。
函数也可以不表明返回值类型,Scala会自动识别函数的返回值类型
当函数{}内只有一个表达式的时候,可以省略{}。
{}之间的叫做代码块,而一个表达式也是一个代码块。
Scala函数的求值策略
Scala里有两种求值策略(Evaluation Strategy)
- Call By Value --对函数的实参求值,且仅求值一次之后赋值给实参之后进行带入;
- Call By Name --函数实参每次在函数体内被用到是会被求值使用;
Scala通常使用Call By Value;
如果函数形象类型以 “ => “开头那木会使用Call By Name;
def foo(x : Int) = x //Call By Value
def foo(x : => Int) = x //Call By Name
eg:
test1是Call By Value,在运算时:先运算 x = 3 + 4----->x = 7 ------>将x = 7 带入函数中再运算;
test2 是Call By Name,在运算时:直接将x = (3 + 4)带入函数中运算。