函数 作为一等公民****
仓颉中函数可以作为普通表达式使用,可以作为参数传递,作为函数返回值,被保存在其他数据结构中,或者赋值给一个变量使用。
| func f(x: Int) { return x} let a = f let square = {x: Int => x * x} // lambda 表达式 // 函数嵌套定义,以及函数作为返回值func g(x: Int) { func h(){ return f(square(x)) } return h} func h(f: ()->Int) { f()} let b = h(g(100)) |
|---|
除了上面例子中的全局函数,对象或结构体等数据类型的成员函数同样也可以作为一等公民使用。下面的例子中,对象o的成员函数resetX作为普通表达式被赋值给变量f,对f的调用则会改变对象o中成员变量x的值。
| class C{ var x = 100 func resetX(n: Int){ x = n return x }} main(){ let o = C() let f = o.resetX // 成员函数作为一等公民 f(200) print(o.x) // 200} |
|---|