返回介绍

基本语法

发布于 2025-03-08 18:25:13 字数 6333 浏览 0 评论 0 收藏 0

定义包名

包名应该在源文件的最开头:

package my.demo
import java.util.*
//...

包名不必和文件夹路径一致:源文件可以放在任意位置。

定义函数(方法)

该函数接受俩个 int 型参数,并返回一个 int :

fun sum(a: Int , b: Int) : Int{
    return a + b
}

该函数有一个表达式函数体以及一个推断型的返回值:

fun sum(a: Int, b Int) = a + b

要想函数在模块外面可见就必须有一个确定的返回值:

public fun sum(a: Int, b: Int): Int = a + b

函数返回一个没有意义的值:

fun printSum(a: Int, b: Int): Uint{
    print( a + b)
}

Uint 的返回类型可以省略:

fun printSum(a: Int, b: Int){
    print( a + b)
}

更多请参看 函数

定义局部变量

声明静态变量(只读):

val a: Int = 1
val b = 1 //推导出 Int 型
val c: Int //当没有初始化值时类型是必须声明的
c = 1 // 赋值

可变的变量:

 var x = 5 //推导出 Int 型
x += 1

更多请参看 属性和字段

使用字符串模板

fun main(args: Array<String>) {
    if (args.size() == 0) return
    print("First argument: ${args[0]}")
}

更多请参看 字符串模板

使用条件表达式

fun max(a: Int, b: Int): Int {
    if (a > b)
        return a
    else
        return b
}

把 if 当表达式:

    fun max(a: Int,  b: Int) = if (a > b) a else b

更多请参看 if 表达式

使用可空变量以及空值检查

当空值可能出现时应该明确指出可空。

下面的函数是当 str 不能转成 Int 值时返回空:

fun parseInt(str : String): Int?{
    //...
}

使用一个返回可空值的函数:

fun main(args: Array<String>) {
    if (args.size <2 ){
        print("Two integers expected")
        return
    }

    val x = parseInt(args[0])
    val y = parseInt(args[1])

    //直接使用 x*y 会因为它们中有空值产生错误
    if (x != null && y !=null){
        //x 和 y 将会在空值检测后自动转换为非空值
        print(x * y)
    }
}

或者这样

    //...
    if (x == null) {
        print("Wrong number format in '${args[0]}' ")
        return
    }
    if (y ==nulll) {
        print("Wrong number format in '${args[1]}' ")
        return
    }
    //x 和 y 将会在空值检测后自动转换为非空值
    print(x * y)

更多请参看 空安全

使用值检查并自动转换

使用 is 操作符检查一个表达式是否是某个类型的实例。如果对一个不可变的局部变量属性检查是否是某种特定类型,就没有必要明确转换:

fun getStringLength(obj: Any): Int? {
    if ( obj is string ){
        //obj 将会在这个分支中自动转换为 String 类型
        return obj.length
    }
    // obj 在种类检查外仍然是 Any 类型
    return null
}

或者这样

fun getStringLength(obj: Any): Int? {
    if ( obj is string )
        return obj.length

    //obj 将会在这个分支中自动转换为 String 类型
    return null
}

甚至可以这样

fun getStringLength(obj: Any): Int? {
    if (obj is String && obj.length > 0)
        return obj.Length
    return null
}

更多请参看 类型转换

使用循环

fun main(args: Array<String>){
    for (arg in args)
        print(arg)
}

或者

for (i in args.indices)
    print(args[i])

参看 for 循环

使用 while 循环

fun main(args: Array<Atring>){
    var i = 0
    while (i < args.size()){
        print(args[i++])
    }
}

参看 while 循环

使用 when 表达式

fun cases(obj: Any) {
    when (obj) {
    1    -> print("one")
    "hello"    -> print("Greeting")
    is Long    -> print("Long")
    ! is Long    -> print("Not a string")
    else    -> print("Ubknow")
    }
}

参看 when 表达式

使用 ranges

检查 in 操作符检查数值是否在某个范围内:

if (x in 1..y-1)
    print("OK")

检查数值是否在范围外:

if (x !in 0..array.lastIndex)
    print("Out")

参看 Ranges

使用集合

对一个集合进行迭代:

for (name in names)
    println(name)

使用 in 操作符检查集合中是否包含某个对象

if (text in names) //将会调用 nemes.contains(text) 方法
    print("Yes)

使用字面函数过滤和映射集合:

names filter { it.startsWith("A") } sortBy { it } map { it.toUperCase() }
forEach { print(it) }

参看 高级函数和 lambda 表达式

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文