一 概述
二 标识符
标识符用于给变量命名,分为普通标识符和原始标识符
2.1 普通标识符
1-命名规则
- 由英文字母开头,后接零至多个英文字母、数字或下划线
- 由一至多个下划线开头,后接一个英文字母,最后可接零至多个英文字母、数字或下划线
2-示例
2.2 原始标识符
1-概念
- 原始标识符是在普通标识符或关键字的外面加上一对反引号
- 主要用于将关键字作为标识符的场景
2-示例
1 2
| let `if` = 'if' println(`if`)
|
三 变量
3.1 概念
变量将一个名字和一个特定类型的值关联起来
3.2 分类
1-可变变量(var关键字)
2-不可变变量(let)
3-常量(const)
3.3 示例
1-var
2-let
1 2
| let name:String = "zs" name= 'ls' //错误,let不能赋值
|
3-const
说明:当初始值具有明确类型时,可以省略变量类型标注,编译器会自动推断出变量类型
四 类型(基础数据类型)
4.1 整数类型
1-表格
整数类型 |
Int8 |
Int16 |
Int32 |
UInt8 |
UInt16 |
UInt32 |
UInt64 |
字面量后缀 |
i8 |
i16 |
i32 |
u8 |
u16 |
u32 |
u64 |
表示范围 |
-2^7~2^7-1 |
|
|
0~2^8-1 |
|
|
|
2-示例
1 2
| let a:Int64 = 2024 let b= 67u8
|
4.2 浮点数类型
1-表格
浮点数类型 |
Float16 |
Float32 |
Float64 |
字面量后缀 |
f16 |
f32 |
f64 |
2-示例
4.3 布尔类型(true|false)
1
| let d: Bool= true||false
|
4.4 字符类型(Rune-符文)
1 2
| let e:Rune = '仓' let f:Rune = '\u{9889}' //unicode编码
|
4.5 字符串类型(String)
1 2 3 4 5 6
| let a: Int64= 2024 let g: String= "Cang" +"jie" let h:String= """ 若到江南赶上春,千万和春住。 """ let i: String= "Cangjie${a}"
|
4.6 数组类型(Array)
1 2
| let j: Array<Rune> = [r'仓', r'颉'] let k: VArray<Rune, $2> = [r'C', r'J']
|
说明:
- r'仓'表示Rune示例,在字符串前加r表示
- VArray用于声明数组类型,$2表示数组长度
- 可能存在编码问题
编码问题加上如下声明:
1 2 3 4 5 6 7 8 9 10
| import std.collection.* foreign func SetConsoleOutputCP(wCodePageID: UInt32): Bool main() { unsafe { SetConsoleOutputCP(65001) } let j: Array<Rune> = [r'仓', r'颉'] let k: VArray<Rune, $2> = [r'C', r'J'] println('a==${a}') println("j=${j}") println("k=${k[0]}") }
|
4.7 元组类型
1 2
| let l :(Int64 ,Float64 ) =(2024,8.07) println("l0=${l[0]},l1=${l[1]}")
|
4.8 区间类型
1
| let m:Range<Int64>=2019..2024
|
五 表达式
表达式是可以求值的程序元素,可用于变量赋值、函数传参和返回值等场
5.1 if表达式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| package demo import std.random.* main(): Int64 {
let day = Random().nextInt8(7)+1 if( day == 1) { print("星期一") } else if (day == 2) { print("星期二") } else if (day == 3) { print("星期三") } else if (day == 4) { print("星期四") } else if (day == 5) { print("星期五") } else if (day == 6) { print("星期六") } else if (day == 7) { print("星期日") }
return 0 }
|
5.2 while表达式
1 2 3 4 5 6 7 8
| main(): Int64 { var i = 0 while (i<10) { i++ println(i) } return 0 }
|
5.2 for-in表达式
1 2 3 4 5 6
| main(): Int64 { for (i in 1..10) { println(i) } return 0 }
|
说明:
- for-in迭代对象需要实现迭代器接口Iterable<T>
- 遍历对象可以是:Range、元组等
- 循环体中无须引用循环变量,可用通配符
_
六 程序结构
6.1 项目为例
6.2 结构
七 思维导图