函数使用注意事项和细节2|学习笔记

简介: 快速学习函数使用注意事项和细节2。

开发者学堂课程【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)

}

}

}

相关文章
|
Scala 开发者
包对象注意事项和细节说明|学习笔记
快速学习包对象注意事项和细节说明。
包对象注意事项和细节说明|学习笔记
|
存储 程序员 Go
切片注意事项和细节(2) | 学习笔记
简介:快速学习切片注意事项和细节(2)
148 0
切片注意事项和细节(2) | 学习笔记
|
Go 开发者
切片注意事项和细节(1) | 学习笔记
简介:快速学习切片注意事项和细节(1)
134 0
切片注意事项和细节(1) | 学习笔记
|
Go vr&ar 开发者
切片注意事项和细节(3) | 学习笔记
简介:快速学习切片注意事项和细节(3)
切片注意事项和细节(3) | 学习笔记
|
网络协议 程序员 测试技术
管道的注意事项和细节(2)|学习笔记
快速学习管道的注意事项和细节(2),使用 select 可以解决从管道取数据的阻塞问题【案例演示】 我们在管道读取数据的时候要 close 管道,如果没有关闭,这个时候他会阻塞,而且会发生死锁,但有些情况如想在不想关闭的情况下也不被阻塞的话,我们就要使用 select
管道的注意事项和细节(2)|学习笔记
|
Go vr&ar 开发者
数组注意事项和细节(2)|学习笔记
快速学习数组注意事项和细节(2)。
141 0
数组注意事项和细节(2)|学习笔记
|
Java 编译器 Scala
函数使用注意事项和细节3|学习笔记
快速学习函数使用注意事项和细节3。
|
Java 编译器 Scala
函数使用注意事项和细节1|学习笔记
快速学习函数使用注意事项和细节1。
|
Go 开发者
函数注意事项和细节(3) | 学习笔记
简介:快速学习函数注意事项和细节(3)
102 0
|
Go 开发者
函数注意事项和细节(2) | 学习笔记
简介:快速学习函数注意事项和细节(2)