仓颉语言学习笔记(1)函数

仓颉语言学习笔记(1)函数

函数的参数

参数可以是命名的,也可以是非命名的,命名函数在参数名后多了一个!。非命名参数只能定义在命名参数之前,命名参数之后不能再出现非命名参数。

函数类型

函数是一等公民,可以作为函数的参数或返回值,也可以赋值给变量。

func f1(a: Int64, b: Int64): Int64 {
    return a + b
}

func f2(a: Int64, b: Int64): Int64 {
    return f1(b, a)
}

main() {
    var x = f2(f1(1, 2), f1(2, 1))
    println(x)
}

函数类型由函数的参数类型和返回类型组成,参数类型和返回类型之间使用 -> 连接。参数类型使用圆括号 () 括起来,可以有 0 个或多个参数,如果参数超过一个,参数类型之间使用逗号(,)分隔。

例如,下面函数的类型为(Int64, Int64, Int64) -> Unit。

func display(a: Int64, b: Int64, c: Int64) {
    println("a = ${a}, b = ${b}, c = ${c}")
}

可以为函数类型标记显式的类型参数名。

main() {
    func f1(name: String, salary: Int64){
        println("Name: " + name + ", Salary: " + salary.toString())
    }
    let f2: (nickname: String, salary: Int64) -> Unit
    let f3: (String, Int64) -> Unit
    f2 = f1
    f3 = f1
    f2("Alice", 50000)
    f3("Bob", 60000)
}

函数类型也可作为参数类型。

main() {
    func printAdd(add: (Int64, Int64) -> Int64, a: Int64, b: Int64): Unit {
        println(add(a, b))
    }
    printAdd({x: Int64, y: Int64 => x + y}, 10, 20)
}

嵌套函数

定义在函数体内的函数被称为嵌套函数。

func calc(a: Int64, b: Int64, c: Int64): Int64 {
    func add(x: Int64, y: Int64): Int64 {
        return x + y
    }
    return add(a, add(b, c))
}

Lambda表达式

Lambda 表达式的语法为如下形式: { p1: T1, …, pn: Tn => expressions | declarations }

let f1 = {
    a: Int64, b: Int64 =>
    println("a = " + a.toString())
    println("b = " + b.toString())
}

main() {
    f1(10, 20)
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值