Kotlin之字面函数和函数表达式

本文详细介绍了Kotlin中的函数定义方式,包括字面函数、函数表达式、函数引用等概念,并展示了如何利用Kotlin的特性进行数据类型智能转换及运算符重载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这一节涉及的东西比较杂,各种函数和表达式,零零散散

package net.edaibu.kotlintest.FunctionAndLambda

/**
 * @author geqipeng
 *
 * @date 2017/6/1
 *
 * @time 16:39
 */

//字面函数和函数表达式

//字面函数
fun findBigOne(a: Int, b: Int): Boolean {
    return a > b
}

//函数文本语法
val sum1 = { x: Int, y: Int -> x + y }
//写法二
val sum2: (Int, Int) -> Int =
        { x, y -> x + y }

//函数表达式
fun getSum(x: Int, y: Int): Int = x + y

//函数表达式2
fun getSum2(x: Int, y: Int): Int {
    return x + y
}

//函数表达式扩展
var sum = fun Int.(other: Int): Int = this + other

//数据类型智能转换
fun transfer(x: Any) {
    if (x is String) {
        println(x.length)
    }
}

//函数引用
fun testQuote(num: Int) = num % 2 != 0

//属性引用
var xx = 1

//扩展属性
val String.lastChar:Char
get() = 'k'


fun main(args: Array<String>) {
    println(getSum(10, 20))      //30
    println(getSum2(10, 20))     //30
    println("range_________________________")
//range
    for (i in 1..5) {
        println(i)   //12345
    }
    println("if判断____________________________")
    var i = 5
    if (i in 1..5) {
        println(i)  //5
    }

    println("downto______________________________")
    //逆序输出  downto
    for (i in 4 downTo 2) {
        println(i)             //432
    }
    println("reverse————————————————————————————————————————")
    for (i in (1..5).reversed())
        println(i)        //54321

    println("is 表达式————————————————————————————————————————————")
    //is表达式
    if ("哈哈" is String) {
        println("is string")   //is string
    }

    println("智能转换——————————————————————————————————————")
    println(transfer("hello kotlin"))   //12


    println("when表达式——————————————————————————————————")
    var x: Any = 100
    when (x) {
        is Int -> print(x)    //100
        is String -> print(x.length)
    }
    println("运算符重载————————————————————————————————————————————————")

    //运算符重载
    var a = 10
    var b = 20
    //加
    val c = a.plus(b)
    //减
    val d = a.minus(b)
    //乘
    val e = a.times(b)
    //除
    val f = a.div(b)
    //取余
    val g = a.mod(b)
    print("__c=" + c + "_d=" + d + "_e=" + e + "_f=" + f + "_g=" + g)    //__c=30_d=-10_e=200_f=0_g=10

    //空安全
    var n: String? = "hahaha"
    n = null
    //采用?符号进行为空判断即 n不为空才将n的长度赋值给m
    val m = n?.length
    println(m)

    //函数引用  使用符号::来引用方法
    println("函数引用——————————————————————————————————")
    var list1 = listOf(1, 2, 3, 4)
    println(list1.filter(::testQuote))  // [1, 3]

    println("属性引用______________________________")
    println(::xx.get())   //1
    ::xx.set(2)           //通过set方法来进行赋值
    println(::xx.get())   //2

    println("扩展属性_______________________________")
    println(String::lastChar.get("kotlin"))    // k


}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值