华为仓颉-函数定义与使用

134 阅读1分钟

仓颉使用关键字 func 来表示函数定义的开始,func 之后依次是函数名、参数列表、可选的函数返回值类型、函数体。其中,函数名可以是任意的合法标识符,参数列表定义在一对圆括号内(多个参数间使用逗号分隔),参数列表和函数返回值类型(如果存在)之间使用冒号分隔,函数体定义在一对花括号内。

这里和golang就一样啦,go里面也是通过func来定义,其实学来go的同学来学仓颉会发现如此简单,如果你是学java的,可能有很多地方你会不习惯。

以下代码,我就把九九乘法定义一个函数来,然后通过main函数里面调用。

package cangjieDemo

struct ForForNineTest{

    func jiu(){
        for (i in 1..=9) {
            for( j in 1..=i ){
                print(j.toString() + "*" + i.toString() + "=" + (j * i).toString() + " ");
            }
            println();
        }
    }
    
}


package cangjieDemo
main(): Int64 {
    var f = ForForNineTest()
    f.jiu()
    return 0
}


以上演示的是无返回值无参数,它可以定义接受参数和返回值

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

官网里面还介绍了 函数里面定义函数,嵌套函数,函数重载等,在定义对象时,对象里面写的就是函数,函数也是一等公民



package cangjieDemo.demo1

public func testTuple():(Int64,String){
     (18,"Alan")   
}

package cangjieDemo

import cangjieDemo.demo1.testTuple

main(): Int64 {
    var tuple = (true,"Alan",18,"男")
    println("是否选中 ${tuple[0]}, 姓名:${tuple[1]} , 年龄:${tuple[2]} ,性别:${tuple[3]}")
    //var f = ForForNineTest()
    //f.jiu()


    var tuple2 = testTuple()
    println("姓名:${tuple2[0]} , 年龄:${tuple2[1]}")
    return 0
}


输出:

image.png

以上代码定义一个函数为testTuple返回值为元组,那么在调用的时候,通过导包到函数后可调用。给我感觉写起也很清爽。