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

「Mac玩转仓颉内测版30」基础篇10 - 区间类型详解

本篇将介绍 Cangjie 中的区间类型,包括区间的定义、创建、访问、常见操作及其在循环和条件判断中的应用,帮助开发者熟练掌握区间的使用。


关键词
  • 区间类型定义
  • 区间创建
  • 区间访问
  • 区间操作
  • 应用场景

一、区间类型概述

在 Cangjie 中,区间表示一个具有固定步长的数值序列,常用于遍历、计数和范围判断。区间类型是泛型类型,使用 Range 表示。T 是可以支持关系操作符,并且可以和 Int64 类型值进行加法的类型。常见的 Range 用于表示整数区间。

区间实例通常包含三个主要属性:startendstep。其中,startend 表示序列的起始值和结束值,step 表示前后两个元素之间的差值(即步长),且步长类型为 Int64,不能为 0。

示例

let rangeA = Range<Int64>(1, 6, 1, true, true, true)   // 包含 1 到 6
let rangeB = Range<Int64>(5, 1, -1, true, true, false) // 包含 5 到 2for (i in rangeA) {println(i)
}
println('')for (i in rangeB) {println(i)
}

输出:

1
2
3
4
5
65
4
3
2

二、区间类型字面量

Cangjie 提供两种区间字面量格式:左闭右开左闭右闭

  1. 左闭右开:格式为 start…end : step,表示从 start 开始,以 step 为步长,直到不包含 end 的序列。
  2. 左闭右闭:格式为 start…=end : step,表示从 start 开始,以 step 为步长,直到包含 end 的序列。

示例

let n = 8
let range1 = 2..8 : 2    // range1 包含 2, 4, 6
let range2 = 3..=n : 2   // range2 包含 3, 5, 7
let range3 = n..0 : -3   // range3 包含 8, 5, 2
for (i in range1) {println(i)
}
println('')for (i in range2) {println(i)
}
println('')for (i in range3) {println(i)
}
println('')

输出:

2
4
63
5
78
5
2

区间字面量的 step 默认值为 1,但不能为 0。如果 step 为 0,将引发错误。此外,区间也可能为空区间。

示例

let range4 = 5..10 : 1    // range4 包含 5 到 9
let range5 = 10..5 : -1   // range5 包含 10 到 6
let range6 = 10..5 : 1    // 空区间
for (i in range4) {println(i)
}
println('')for (i in range5) {println(i)
}
println('')for (i in range6) {println(i)
}
println('')

输出:

5
6
7
8
910
9
8
7
6(空区间)

三、区间的访问

区间可用于遍历、计数等操作,尤其适用于循环和条件判断。Cangjie 中不支持直接调用 containsreversed 方法,因此我们可以使用循环进行值判断。

示例:使用循环判断值是否在区间内:

let range = 0..15 : 3
let target = 9
var found = false
for (num in range) {if (num == target) {found = truebreak}
}
println("是否包含 9: ${found}")  // 输出: 是否包含 9: true

输出:

是否包含 9: true

四、区间的常见操作

Cangjie 提供多种区间操作,便于区间范围的管理和判断:

  1. 遍历区间:区间支持使用 for 循环进行遍历。
  2. 反向区间:可以通过自定义递减步长来实现反向区间遍历。

示例

let range = 2..9 : 2// 遍历区间
for (num in range) {println("遍历元素: ${num}")
}// 反向区间
let reversedRange = 8..=2 : -2
for (num in reversedRange) {println("反向区间元素: ${num}")
}

输出:

遍历元素: 2
遍历元素: 4
遍历元素: 6
遍历元素: 8
反向区间元素: 8
反向区间元素: 6
反向区间元素: 4
反向区间元素: 2

五、区间的应用场景

区间在 Cangjie 中应用广泛,尤其适合用于循环控制和条件判断等情况:

5.1 循环遍历

区间可以简化对数值范围的遍历操作。

示例

let range = 1..5
var product = 1for (num in range) {product *= num
}println("区间乘积: ${product}")  // 输出: 区间乘积: 24

输出:

区间乘积: 24
5.2 条件判断

区间可用于快速判断某个数值是否落在指定范围内。

示例

let heightRange = 150..190
let height = 185
var found = false
for (num in heightRange) {if (num == height) {println("身高符合标准")found = truebreak}
}if (!found) {println("身高不符合标准")
}

输出:

身高符合标准

六、区间的高级操作

区间支持一些高级操作,如反向区间、指定步长创建递增或递减区间等,便于处理复杂数据场景。

示例

let revRange = 10..=0 : -2
for (num in revRange) {println("递减区间元素: ${num}")
}

输出:

递减区间元素: 10
递减区间元素: 8
递减区间元素: 6
递减区间元素: 4
递减区间元素: 2
递减区间元素: 0

小结

本篇介绍了 Cangjie 中的区间类型,涵盖区间的定义、创建、访问、常见操作及应用场景,帮助开发者熟练掌握区间在遍历和条件判断中的使用。


下篇预告

下一篇将介绍 Cangjie 的 Unit 类型Nothing 类型,详解它们在表示空值、处理异常和优化代码结构中的应用,敬请关注 「Mac玩转仓颉内测版31」基础篇11 - Unit 与 Nothing 类型详解


上一篇: 「Mac玩转仓颉内测版29」基础篇9 - 数组类型详解
下一篇: 「Mac玩转仓颉内测版31」基础篇11 - Unit 与 Nothing 类型详解

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



http://www.mrgr.cn/news/77868.html

相关文章:

  • 记录第一次安装laravel项目
  • 自制Windows系统(十)
  • C#对INI配置文件进行读写操作方法
  • Linux ss 命令详解
  • 数据结构-树状数组专题(1)
  • Python的3D可视化库 - vedo (2)visual子模块 基本可视化行为
  • springboot配置https,并使用wss
  • logback动态获取nacos配置
  • Spring 中的 ProxyFactory 创建代理对象
  • 学习Servlet (Servlet的实现方式1)
  • 英语写作中“联系、关联”associate correlate 及associated的用法
  • 28.UE5游戏框架,事件分发器,蓝图接口
  • 17. 指针类型和步长概念问题
  • Node相关教程
  • css效果
  • vue面试题——描述一下vue
  • Linux高阶——1123—
  • 【阵列信号处理】相干信号和非相干信号生成
  • docker基础命令
  • 【C++知识总结2】C++里面的小配角cout和cin
  • #Verilog HDL# Verilog中的generate用法集锦
  • 【线程】Java多线程编程
  • 瑞佑液晶控制芯片RA6807系列介绍 (三)软件代码详解 Part.10(让PNG图片动起来)完结篇
  • MySQL学习/复习10视图/用户/权限/语言连接数据库
  • Vue实训---3-element plus的使用与布局
  • 深入解读:2023华为流程体系及落地实施