语言基础
学习数字、变量、函数、条件判断和循环。
本页从最常见的代码开始,一步步介绍 CK:先认识数字,再给数字起名字,接着把计算写成函数,最后让程序作出选择或重复计算。每段完整示例都可以保存为 .ck 文件,用快速开始里的命令检查和运行。
1. 数字和它们的类型#
CK 会把数字的种类写出来。先记住这三种就够了:
i32:常用的整数,例如3、-8。f64:可以表示小数的数字,例如2.5。bool:只有true(是)和false(否)两种值。
fn main() -> i32 {
let count: i32 = 3;
let price: f64 = 2.5;
let available: bool = true;
print_i32(count);
print_newline();
print_f64(price);
print_newline();
print_bool(available);
print_newline();
return 0;
}
保存并运行后会依次看到 3、2.5 和 true。冒号后面的名字告诉 CK 这个变量要装哪种值。不同数字类型不会自动互相转换,因此刚开始时,让同一次计算里的数字保持同一种类型最简单。
2. 用变量给值起名字#
变量让你给一个值起个容易理解的名字。let 后面写名字和类型;之后可以把新值放进同一个变量:
fn main() -> i32 {
let apples: i32 = 3;
apples = apples + 1;
print_i32(apples);
print_newline();
return 0;
}
运行后看到 4。apples + 1 是一次普通加法,等号把新结果存回 apples。
3. 把计算写成函数#
函数就是一个有名字、可以重复使用的小计算。括号里列出它需要的输入,箭头 -> 后写它会交回的值的种类,return 后面写结果。
fn double(value: i32) -> i32 {
return value * 2;
}
fn main() -> i32 {
let answer: i32 = double(21);
print_i32(answer);
print_newline();
return 0;
}
运行后看到 42。double(21) 把 21 交给 double 函数,函数把它乘以二,再把结果交回来。
如果一个函数不需要交回计算结果,可以把结果类型写成 void。新手阶段可以先专注于上面的 i32 例子。
4. 用 if 选择下一步#
if 会检查一个是或否的问题:条件为真时运行第一组代码,否则运行 else 后的代码。
fn main() -> i32 {
let score: i32 = 75;
if score >= 60 {
print_i32(1);
} else {
print_i32(0);
}
print_newline();
return 0;
}
因为 75 >= 60 为真,这个程序显示 1。把 75 改成 50 再运行,会显示 0。比较会产生 bool 值,也就是 true 或 false。
5. 用 while 重复计算#
当一件事需要重复做几次时,可以用 while。只要它后面的条件为真,大括号里的代码就会再运行一次。
fn main() -> i32 {
let i: i32 = 1;
let total: i32 = 0;
while i <= 3 {
total = total + i;
i = i + 1;
}
print_i32(total);
print_newline();
return 0;
}
程序依次把 1、2、3 加到 total,最后显示 6。每次重复时,i 都会增加一;当 i 变成 4,条件 i <= 3 为假,循环就结束。
几条好记的规则#
- 每个变量和函数输入都写明要处理的值的种类。
- 多数语句以分号
;结束;条件和循环的大括号里面也是如此。 main是运行一个程序时的起点。return 0表示正常结束。print_i32、print_f64、print_bool和print_newline用来在 Native 程序中显示简单结果;CK 目前不提供一般文字输入输出。
进阶:让其他程序调用 CK#
前面的例子都从 main 开始运行。若要把一个计算交给 C 或其他宿主程序调用,可以写成 export fn。下面是这种函数定义的片段,需要由宿主程序调用:
export fn add(a: i32, b: i32) -> i32 {
return a + b;
}
如何生成供其他程序使用的文件,见输出方式。像指针、切片以及谁负责提供和保管内存,则属于进阶:内存与安全;初学时可以先跳过。
链接到仓库的完整参考文档以 main 分支为准,可能包含尚未进入最新下载版本的功能。