开发者学堂课程【Scala 核心编程-基础:函数使用注意事项和细节2】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/609/detail/8934
函数使用注意事项和细节2
函数使用注意事项和细节2
1、细节11
scala 函数的形参默认是 val 的,因此不能在函数中进行修改。
2、细节12
递归函数未执行之前是无法推断出来结果类型,在使用时必须有明确的返回值类型,因为递归的编译器没有那么强大,没办法判断递归后到底返回什么,在递归过程中不停的返回,并不能用静态的方式来看待递归调用,比如下面代码中不停在调用 f8,但又不知道返回类型。
def f8(n: Int)= {
//所以递归这样写是错误的,因为递归不能使用类型推断,必须指定返回值类型
if(n<= 0)
1
else
n* f8(n- 1)
}
案例演示:
package com. atguigu. chapter05. fundetails
object DetailsRecursive {
def main(args: Array[String]): Unit = {
}
def f1(n:Int):Int= {
//定义 f1,传入 n,类型为 Int,如果把:Int拿掉的话 else 中的 f1会出现报错,报错为递归方法 f1需要一个结果的类型,则说明是没办法用类型推断的。
if (n==1) {
//如果 n=1
1
//则返回1
}else {
f1(n-1)
//否则返回 f1(n-1)
}
}
}