仓颉语言学习笔记(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)
}
4558

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



