仓颉原生应用编程语言教程(第3期)

123 阅读1分钟

函数 作为一等公民****

仓颉中函数可以作为普通表达式使用,可以作为参数传递,作为函数返回值,被保存在其他数据结构中,或者赋值给一个变量使用。

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}