仓颉使用关键字 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
}
输出:
以上代码定义一个函数为testTuple返回值为元组,那么在调用的时候,通过导包到函数后可调用。给我感觉写起也很清爽。