函数和变量
在开发当中,函数和变量是必不可少的。如何去声明一个函数呢?下面举个栗子:
/**
* 比较两个数的大小
* @param a
* @param b
* @return a or b
*/
fun max(a: Int, b: Int): Int {
return if (a > b) a else b
}
fun main() {
println("比较1和2的大小," + max(1, 2) + "最大")
}
解析:
函数的声明由fun关键字开始,函数名称跟在fun后面;比如上面例子的函数名称是max,函数名称后面括号是参数列表。参数列表后面是返回类型,它们之间使用冒号隔开。例子中if是有结果的表达式,与Java中的三元运算符相似:(a>b)?a:b。
表达式函数体
可以让上面的例子变得更加简洁。直接上代码:
fun max(a: Int, b: Int): Int = if (a > b) a else b
执行出来的效果是一样的,我们在上面的代码当中去掉了花括号和return语句。
还有更简洁的表达【说句实在话有点不敢相信】,验证过的代码:
fun max(a: Int, b: Int) = if (a > b) a else b
细心的小伙伴,肯定发现这句更简洁的表达式少了返回类型。没有想到这样也是可以的,书中的给出的解释是
对于表达式体函数来说,编译器会分析作为函数体的表达式,并把它的类型作为函数返回类型,即时没有显式地写出来,这种分析通常被称为“类型推导”。
关于表达式函数体最简洁的写法的注意事项
只有表达式函数体的返回类型可以省略。如果返回值是代码体函数,必须显式地写出来返回类型和return语句。因为在实际的项目当中一般都很长然后包含多条return语句,显式写出来会帮你更好的理解这个函数。
变量的声明
使用val关键字简单声明变量,可以加或者不加变量类型,举个栗子:
fun main() {
// 编译器类型推导
val a = 1
// 指定变量类型
val b:Int = 2
}
可变变量和不可变变量
声明变量的关键字有两个:
- val(来自value)——不可变引用。使用val声明的变量不能在初始化之后再次赋值。相当于Java的final变量。
- var(来自varlable)——可变引用。这种变量的值是可以被改变的。这种相当于Java的普通变量。
《Kotlin实战》中推荐默认情况下,尽可能使用val关键字声明变量,仅在必要的情况下换成var。
需要注意:
- val 引用自身是不可变的,但是它的指向的对象是可变的。例如
val languages = arrayListOf("Java")
languages.add("Kotlin")
- var 引用是允许变量改变自己的值,但是它的类型是不可以改变的。例如:
var test = 1
test = "改变类型试试"
运行会出现:Error:(8, 12) Kotlin: Type mismatch: inferred type is String but Int was expected
希望我的这篇文章对学习Kotlin开发的小伙伴们有帮助,推广一下我微信公众号,我会经常更新一下技术干货或者开发踩坑历程,欢迎大家关注我!


本文深入讲解了Kotlin中的函数声明与变量定义,包括如何声明函数、参数、返回类型及表达式函数体的简化写法,同时介绍了val与var的区别,强调了类型推导与类型明确的重要性。
705

被折叠的 条评论
为什么被折叠?



