「Mac玩转仓颉内测版8」入门篇8 - Cangjie函数与方法

本篇介绍Cangjie编程语言中的函数与方法,帮助理解如何通过函数封装重复操作,提升代码的复用性和可维护性。

关键词
  • Cangjie函数
  • 方法定义
  • 参数传递
  • 返回值
  • 模块化与复用性

一、什么是函数?

函数是一个代码块,用于接收参数、执行操作并返回结果。在Cangjie中,函数可以接受多个参数,并支持多种返回值类型。


二、函数的定义与调用
2.1 定义函数

在Cangjie中,函数的基本定义格式如下:

cangjie 复制代码
func 函数名(参数1: 参数类型, 参数2: 参数类型): 返回类型 {
    // 函数体
    return 返回值
}
2.2 示例:加法函数
cangjie 复制代码
func add(a: Int64, b: Int64): Int64 {
    return a + b
}
2.3 调用函数

定义好函数后,可以通过以下方式调用:

cangjie 复制代码
main(): Int64 {
    let result = add(3, 5)
    println("结果是: ${result}")
    
    return 0
}

输出:

结果是: 8

三、函数参数与返回值
3.1 参数类型

函数可以接受多个参数,参数的类型必须明确声明。

3.2 返回值类型

函数的返回值类型必须指定,若函数没有返回值,可将返回类型设为 Unit

示例:返回最大值的函数
cangjie 复制代码
func max(a: Int64, b: Int64): Int64 {
    if (a > b) {
        return a
    } else {
        return b
    }
}

调用:

cangjie 复制代码
main(): Int64 {
    let larger = max(10, 20)
    println("较大的数是: ${larger}")
    
    return 0
}

输出:

较大的数是: 20

四、可选参数与默认值

Cangjie支持为函数参数设置默认值,使调用函数时可以选择性传递部分参数。

示例:带默认参数的函数
cangjie 复制代码
func greet(name: String, message!: String = "Hello"): Unit {
    println("${message}, ${name}")
}

调用:

cangjie 复制代码
main(): Int64 {
    greet("Alice")  // 使用默认值
    greet("Bob", message: "欢迎")  // 自定义消息

    return 0
}

输出:

Hello, Alice
欢迎, Bob

五、匿名函数与Lambda表达式

匿名函数和Lambda表达式允许在没有函数名称的情况下定义简单的逻辑,适合处理一次性操作。

示例:Lambda表达式
cangjie 复制代码
let add1 = { a: Int64, b: Int64 => a + b }
println(add1(2, 3))  // 输出: 5

输出:

5

六、方法与函数的区别

在Cangjie中,方法属于类的一部分,绑定在对象上;而函数是独立的代码块。

示例:类中的方法
cangjie 复制代码
class Calculator {
    func add(a: Int64, b: Int64): Int64 {
        return a + b
    }
}

main(): Int64 {
    let calc = Calculator()
    println(calc.add(30, 20))  // 输出: 50

    return 0
}

输出:

50

小结

本篇介绍了Cangjie中的函数与方法,包括函数的定义、参数传递、返回值、可选参数、匿名函数等概念。通过这些内容,可以创建更加模块化、复用性更强的代码。


下篇预告

下一篇将通过一个综合案例,演示如何运用Cangjie编程语言中的函数和方法,敬请期待 「Mac玩转仓颉内测版9」入门篇9 - 综合案例篇


上一篇: 「Mac玩转仓颉内测版7」入门篇7 - Cangjie控制结构(下)
下一篇: 「Mac玩转仓颉内测版9」入门篇9 - 综合案例篇

作者:SoraLuna

链接:https://www.nutpi.net/thread?topicId=144

來源:坚果派

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


相关推荐
Fuxiao___8 分钟前
不使用递归的决策树生成算法
算法
我爱工作&工作love我13 分钟前
1435:【例题3】曲线 一本通 代替三分
c++·算法
白-胖-子1 小时前
【蓝桥等考C++真题】蓝桥杯等级考试C++组第13级L13真题原题(含答案)-统计数字
开发语言·c++·算法·蓝桥杯·等考·13级
workflower1 小时前
数据结构练习题和答案
数据结构·算法·链表·线性回归
好睡凯1 小时前
c++写一个死锁并且自己解锁
开发语言·c++·算法
Sunyanhui11 小时前
力扣 二叉树的直径-543
算法·leetcode·职场和发展
一个不喜欢and不会代码的码农1 小时前
力扣105:从先序和中序序列构造二叉树
数据结构·算法·leetcode
前端郭德纲1 小时前
浏览器是加载ES6模块的?
javascript·算法
SoraLuna1 小时前
「Mac玩转仓颉内测版10」PTA刷题篇1 - L1-001 Hello World
算法·macos·cangjie
白-胖-子2 小时前
【蓝桥等考C++真题】蓝桥杯等级考试C++组第13级L13真题原题(含答案)-成绩排序
c++·算法·蓝桥杯·真题·蓝桥等考