当前位置: 首页 > news >正文

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

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

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

一、什么是函数?

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


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

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

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

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

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

输出:

结果是: 8

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

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

3.2 返回值类型

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

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

调用:

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

输出:

较大的数是: 20

四、可选参数与默认值

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

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

调用:

main(): Int64 {greet("Alice")  // 使用默认值greet("Bob", message: "欢迎")  // 自定义消息return 0
}

输出:

Hello, Alice
欢迎, Bob

五、匿名函数与Lambda表达式

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

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

输出:

5

六、方法与函数的区别

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

示例:类中的方法
class Calculator {func add(a: Int64, b: Int64): Int64 {return a + b}
}main(): Int64 {let calc = Calculator()println(calc.add(30, 20))  // 输出: 50return 0
}

输出:

50

小结

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


下篇预告

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


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

作者:SoraLuna
链接:https://www.nutpi.net/thread?topicId=144
來源:坚果派
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


相关文章:

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

本篇介绍Cangjie编程语言中的函数与方法,帮助理解如何通过函数封装重复操作,提升代码的复用性和可维护性。 关键词 Cangjie函数方法定义参数传递返回值模块化与复用性 一、什么是函数? 函数是一个代码块,用于接收参数、执行操作…...

2024最新版JavaScript逆向爬虫教程-------基础篇之Proxy与Reflect详解

目录 一、监听对象的操作二、Proxy基本使用2.1 创建空代理2.2 定义捕获器2.2.1 Proxy的set和get捕获器2.2.2 Proxy(handler)的13个捕获器 三、Reflect的作用3.1 Reflect的使用3.2 Reflect其余方法(9个)3.3 Proxy与Reflect中的receiver参数3.4 Reflect中的construct方法 ECMAScr…...

代码修改材质参数

1、 如何得到对象使用的材质 获取到对象的渲染器Renderer Mesh Renderer和Skinned Mesh Renderer都继承Renderer,可以用里式替换原则父类获取、装载子类对象 通过渲染器获取到对应材质 可以利用渲染器中的material或者sharedMaterial来获取物体的材质&#xff0…...

[C++11] 包装器 : function 与 bind 的原理及使用

文章目录 functionstd::function 的基本语法使用 std::function 包装不同的可调用对象function包装普通成员函数为什么要传入 this 指针参数?传入对象指针与传入对象实例的区别 例题 :150. 逆波兰表达式求值 - ⼒扣(LeetCode) bin…...

java项目-jenkins任务的创建和执行

参考内容: jenkins的安装部署以及全局配置 1.编译任务的general 2.源码管理 3.构建里编译打包然后copy复制jar包到运行服务器的路径 clean install -DskipTests -Pdev 中的-Pdev这个参数用于激活 Maven 项目中的特定构建配置(Profile) 在 pom.xml 文件…...

单片机中的BootLoader(重要的概念讲解)

文章目录 一、链接地址和执行地址1. 链接地址(Load Address)2. 执行地址(Execution Address)链接地址与执行地址的关系实际工作流程总结二、相对跳转和绝对跳转1. 相对跳转(Relative Jump)2. 绝对跳转(Absolute Jump)3. `BX` 和 `BL` 指令总结三、散列文件1. 散列文件的…...

【数据分享】中国食品工业年鉴(1984-2023) PDF

数据介绍 一、《中国食品工业年鉴》(以下简称《年鉴》)是一部全面反映上一年度全国食品工业发展情况纪年性、资料性、权威大型年刊。《年鉴(2023)》系统收录了全国食品行业各专业和 31个省(自治区、直辖市)2022年食品工业经济运行情况的综述,《年鉴》是由中国食品工…...

优选算法 - 1 ( 双指针 移动窗口 8000 字详解 )

一&#xff1a;双指针 1.1 移动零 题目链接&#xff1a;283.移动零 class Solution {public void moveZeroes(int[] nums) {for(int cur 0, dest -1 ; cur < nums.length ; cur){if(nums[cur] 0){}else{dest; // dest 先向后移动⼀位int tmp nums[cur];nums[cur] num…...

FairyGUI和Unity联动(入门篇)

一、FairyGUI编辑器中 1.新建按钮、新建组件 编辑器中界面简易设计如下 2.文件-发布设置-发布路径&#xff1a;自己unity项目Resources所在的路径 二、Unity 使用代码展示UI using FairyGUI; using System.Collections; using System.Collections.Generic; using UnityEngi…...

Go:文件输入输出以及json解析

文章目录 读取用户的输入文件读写读文件写文件 文件拷贝io包中接口的概念JSON 数据格式编码解码任意的数据&#xff1a; 读取用户的输入 从键盘和标准输入 os.Stdin 读取输入&#xff0c;最简单的办法是使用 fmt 包提供的 Scan… 和 Sscan… 开头的函数 看如下的程序 func t…...

编写红绿起爆线指标(附带源码下载)

编写需求&#xff1a; 想问问有没有能标注行情起爆点的指标。 效果展示&#xff1a; 红线上&#xff0c;出现绿柱转红柱做多。 蓝线下&#xff0c;出现红柱转绿柱做空。 源码展示&#xff08;部分源码&#xff0c;完整源码需下载源码文件&#xff09;&#xff1a; IsMainIn…...

设计模式(四)装饰器模式与命令模式

一、装饰器模式 1、意图 动态增加功能&#xff0c;相比于继承更加灵活 2、类图 Component(VisualComponent)&#xff1a;定义一个对象接口&#xff0c;可以给这些对象动态地添加职责。ConcreteComponent(TextView)&#xff1a;定义一个对象&#xff0c;可以给这个对象添加一…...

Android11 修改系统语言

1.定义一个view <RelativeLayoutandroid:id"id/rlChooseLanguage"style"style/SettingAboutItem"><TextViewstyle"style/SettingAboutItemTextView"android:text"string/choose_language" /><ImageView style"st…...

vue3 查看word pdf excel文件

也是在网上找的基础上修改的 可以直接使用 npm install vue-office/docx npm install vue-office/excel npm install vue-office/pdf​<template><divclass"Office-Preview"v-loading"loading"element-loading-text"文件加载中...">…...

java八股-垃圾回收机制-垃圾回收算法,分代回收,垃圾回收器

文章目录 垃圾回收算法引用计数法可达性分析算法 jvm垃圾回收算法标记清除算法标记整理算法复制算法本章总结 JVM中的分代回收本章总结 JVM有哪些垃圾回收器&#xff1f;1.串行垃圾收集器2.并行垃圾收集器3.CMS&#xff08;并发&#xff09;垃圾收集器本章小结 详细聊一下G1垃圾…...

iSCSI 和FC的概述

一、技术基础与架构 iSCSI 技术基础&#xff1a;iSCSI是基于TCP/IP协议的存储网络协议&#xff0c;它实现了在IP网络上运行SCSI协议。架构&#xff1a;iSCSI协议栈包括SCSI层、iSCSI层、TCP/IP层等&#xff0c;通过标准的以太网技术实现存储数据的传输。 FC 技术基础&#xff1…...

一文了解Android中的AudioFlinger

AudioFlinger 是 Android 音频框架中的一个核心组件&#xff0c;负责管理音频流的混合和输出。它是 Android 音频系统服务的一部分&#xff0c;作为音频框架和硬件之间的桥梁&#xff0c;接收应用程序的音频请求、进行混音处理&#xff0c;并最终通过音频硬件输出声音。 ![在这…...

超全面!一文带你快速入门HTML,CSS和JavaScript!

作为一名后端程序员&#xff0c;在开发过程中避免不了和前端打交道&#xff0c;所以就要了解一些前端的基础知识&#xff0c;比如三剑客HTML,CSS,JavaScript&#xff0c;甚至有必要学习一下Vue、React等前端主流框架。 学习文档&#xff1a;https://www.w3school.com.cn/ 一…...

C语言 | Leetcode C语言题解之第557题反转字符串中的单词III

题目&#xff1a; 题解&#xff1a; char* reverseWords(char* s) {int length strlen(s);char* ret (char*)malloc(sizeof(char) * (length 1));ret[length] 0;int i 0;while (i < length) {int start i;while (i < length && s[i] ! ) {i;}for (int p …...

408笔记合集

操作系统 《王道操作系统》-BitHachi 计算机网络 《王道计算机网络》--BitHachi 组成原理 《王道计算机组成原理》--BitHachi...

YOLO格式标注避坑指南:用labelImg时,你的classes.txt文件生成对了吗?

YOLO格式标注避坑指南&#xff1a;labelImg中classes.txt的隐藏逻辑与实战解决方案 在计算机视觉项目的实际开发中&#xff0c;数据标注的质量往往直接决定了模型性能的上限。许多团队花费大量时间标注数据后&#xff0c;却在模型训练阶段遭遇"标签ID不匹配"、"…...

RuoYi-Vue-Plus项目实战:用WebSocket实现‘服务端通知’功能,我踩了这些坑

RuoYi-Vue-Plus实战&#xff1a;WebSocket服务端通知功能深度解析与避坑指南 在当今企业级应用开发中&#xff0c;实时通信已成为提升用户体验的关键要素。当产品经理提出"后台操作成功时前端实时弹窗提示"的需求时&#xff0c;作为技术负责人的你该如何选择技术方案…...

初创团队如何借助Taotoken控制台实现API密钥与访问审计

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 初创团队如何借助Taotoken控制台实现API密钥与访问审计 对于初创技术团队而言&#xff0c;在快速迭代产品、频繁调用大模型API的同…...

终极指南:如何在PC上完美运行PS4游戏?shadPS4模拟器完全解析

终极指南&#xff1a;如何在PC上完美运行PS4游戏&#xff1f;shadPS4模拟器完全解析 【免费下载链接】shadPS4 PS4 emulator for Windows,Linux,MacOS 项目地址: https://gitcode.com/gh_mirrors/shad/shadPS4 想要在个人电脑上重温《血源诅咒》、《如龙》等经典PS4游戏…...

5步彻底解决显卡驱动问题:Display Driver Uninstaller完整指南

5步彻底解决显卡驱动问题&#xff1a;Display Driver Uninstaller完整指南 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitcode.com/gh_mirrors/di/display-drivers-unin…...

长期使用Taotoken Token Plan套餐对项目研发成本的控制效果

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 长期使用Taotoken Token Plan套餐对项目研发成本的控制效果 在项目研发中&#xff0c;大模型API调用成本是预算管理的重要一环。对…...

Steam Deck Tools 终极指南:Windows 掌机的完美伴侣

Steam Deck Tools 终极指南&#xff1a;Windows 掌机的完美伴侣 【免费下载链接】steam-deck-tools (Windows) Steam Deck Tools - Fan, Overlay, Power Control and Steam Controller for Windows 项目地址: https://gitcode.com/gh_mirrors/st/steam-deck-tools 还在为…...

巴洛克光影建模失败率高达83%?用这7个构图锚点+12组权威艺术史关键词立即逆转

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;巴洛克光影建模的危机本质与历史断层 “巴洛克光影建模”并非真实存在的技术流派&#xff0c;而是对20世纪末至21世纪初三维渲染实践中一种高度装饰化、过度依赖手工打光与物理不一致材质叠加现象的隐喻性指称…...

ReTerraForged终极指南:5步掌握Minecraft高级地形生成技术

ReTerraForged终极指南&#xff1a;5步掌握Minecraft高级地形生成技术 【免费下载链接】ReTerraForged TerraForged for modern MC versions 项目地址: https://gitcode.com/gh_mirrors/re/ReTerraForged ReTerraForged是一款专为现代Minecraft版本设计的革命性地形生成…...

FLUX.1-dev-Controlnet-Union深度解析:多模态控制网络的架构与实战应用

FLUX.1-dev-Controlnet-Union深度解析&#xff1a;多模态控制网络的架构与实战应用 【免费下载链接】FLUX.1-dev-Controlnet-Union 项目地址: https://ai.gitcode.com/hf_mirrors/InstantX/FLUX.1-dev-Controlnet-Union FLUX.1-dev-Controlnet-Union作为FLUX.1-dev生态…...