仓颉笔记
杂项知识点
1. 字符串可以用
+来拼接,与Python类似2. 在字符串中用
${value}插入变量3. 与(
&&)或(||)非(!) :具有逻辑短路特性注:只能用于布尔类型,而不能用于int等类型
1.命名规则
- 由英文字母开头,后接英文字母、数字或下划线(可以下划线开头)
- 原始标识符:在关键字外面加上反引号如:
就可以当做标识符(变量名)使用
2.变量声明
-
变量声明有两种方法,一种是关键词
var,另一种是let
var声明的变量可以改变变量的值
let声明的变量不能改变值(静态?) -
也可以在定义的时候就指定变量的类型
var e: Int64
- 同时定义多个变量?数组?
package demo1
main() {
var (b,c) : (Int64,Int64) = (1,2)
println("${b} ${c}")
}
一、带符号整数(Signed Integers)
| 类型名 | 含义 | 取值范围 |
|---|---|---|
| Int8 | 8 位有符号整数 | -128 ~ 127 |
| Int16 | 16 位有符号整数 | -32,768 ~ 32,767 |
| Int32 | 32 位有符号整数 | -2,147,483,648 ~ 2,147,483,647 |
| Int64 | 64 位有符号整数 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
有“符号”(signed)表示可以是正数或负数。
二、无符号整数(Unsigned Integers)
| 类型名 | 含义 | 取值范围 |
|---|---|---|
| UInt8 | 8 位无符号整数 | 0 ~ 255 |
| UInt16 | 16 位无符号整数 | 0 ~ 65,535 |
| UInt32 | 32 位无符号整数 | 0 ~ 4,294,967,295 |
| UInt64 | 64 位无符号整数 | 0 ~ 18,446,744,073,709,551,615 |
“无符号”(unsigned)表示只能是非负整数。
三、类型简写
| 类型 | 说明 |
|---|---|
| Int | 通常等价于 Int64(平台相关,64 位机器一般是 64 位) |
| UInt | 通常等价于 UInt64 |
3.函数
函数的定义与使用
package demo1
func plus(a:Int64,b:Int64) :Int64{
return a+b
}
main() {
var (a, b) = (5, 6)
println(plus(a,b))
}
多个返回值
package demo1
func vals():(Int64,Int64) {
return(3,7)
}
main() {
var (a, b) = vals()
println(a)
println(b)
var(_,c) = vals()
println(c)
}
注:对于不需要的值,可以用通配符
_来接收
4.if-elif-else结构
package demo1
main() {
var value = 5
if(value>10){
println("value=${value}>10")
}else if(value == 10){
println("value=10")
}else{
println("value=$${value}<10")
}
}
5.For和While循环
for循环
1.相当于python的for i in range(0,3)
- 0(包括)~3(不包括)
package demo1
main() {
for(i in 0..3){
println(i)
}
}
输出:
0
1
2
- 0(不包括)~3(包括)
package demo1
main() {
for(i in 0..=3){
println(i)
}
}
输出
1
2
3
- 仅控制循环次数
package demo1
main() {
for(_ in 0..3){
println("111")
}
}
输出:
111
111
111
2.遍历列表
package demo1
main() {
let lists = ["This","is","Cangjie"]
for(i in lists){
println(i)
}
}
3.以元组的方式遍历列表
package demo1
main() {
let array = [(1,2),(3,4),(5,6)]
for((x,y) in array){
println("${x},${y}")
}
}
while循环
package demo1
main() {
var i = 1
while( i <= 3){
print("${i} ")
i++
}
}
where控制条件
package demo1
main() {
// 打印奇数
for(i in 0..8 where i%2!=0){
// where后接条件
println(i)
}
}
输出:
1
3
5
7
6.Range:表示具有固定步长的序列
Range<T>(start: T, end: T, step: Int64, hasStart: Bool, hasEnd: Bool, isClosed: Bool)
参数解释:
- start: T - 开始值。
- end: T - 结束值。
- step: Int64 - 步长,取值不能为 0。
- hasStart: Bool - 是否有开始值。
- hasEnd: Bool - 是否有结束值。
- isClosed: Bool - true 代表左闭右闭,false 代表左闭右开。
表现形式1:
package demo1
main() {
let r1 = Range<Int64>(0,10,1,false,false,false)
for(i in r1){
print(i.toString()+" ")
}
}
表现形式2:
Start..End:Step
注:这些值可以为变量
package demo1
main() {
let r1 = 0..10:2 // 0 2 4 6 8
for(i in r1){
print(i.toString()+" ")
}
}
package demo1
main() {
let re5 = 10..0 : 1
// 这一行代码是创建 re5 范围的迭代器
var it = re5.iterator()
// Rust 中的 Option 有两个变种:Some(value) 表示有值,None 表示无值。
// 这里的 it.next() 调用返回一个 Option 类型
while (let Some(i) <- it.next()) {
// <- :解包 Option 类型
println(i)
}
}
7.Array数组:
数组声明为 Array<T>,其中 T 表示类型。T 可以是任何类型。
Array<T>(size: Int64, generator: (Int64) -> T)
size:数组长度;generator:一个函数,用于根据索引i生成第i个元素。
数组的创建
package demo1
main() {
var a : Array<Int64> = [1,3,2,4]
var b : Array<String> = ["Hello"," World"]
// lambda 表达式初始化
// i默认为0?每次自动加1?
let d = Array<Int64>(3,{i => 2*i+1})
for(x in d){
println(x)
}
}
查看数组的长度
println(d.size)

浙公网安备 33010602011771号