函数作为一等公民

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

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

}

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐