Kotlin笔记30——Koltin基础之函数和变量

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

函数和变量

在开发当中,函数和变量是必不可少的。如何去声明一个函数呢?下面举个栗子:

/**
 * 比较两个数的大小
 * @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开发的小伙伴们有帮助,推广一下我微信公众号,我会经常更新一下技术干货或者开发踩坑历程,欢迎大家关注我!
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值