在 Gleam 中,函数使用pub fn语法定义。
pub fn add(x: Int, y: Int) -> Int {
x + y
}
这个函数接收两个实参,类型都是Int,并返回一个类型为Int的值。Gleam 中没有return关键字,函数中最后一个表达式的值总是会被_隐式返回_。
实参和返回值的类型标注是可选的,并且 Gleam 始终会对你的代码进行完整的类型检查。通常,Gleam 程序员为了清晰会给函数加上类型标注,但如果愿意,也可以省略。
pub fn add(x, y) {
x + y
}
可以使用function_name(argument1, argument2)语法调用函数。
pub fn double(x: Int) -> Int {
// Call the add function defined above
add(x, x)
}
在 Gleam 中,变量使用let name = expression语法定义。
pub fn main() {
let count = 1
}
变量可以用类型标注来声明。和函数实参一样,这些标注是可选的,不过大多数 Gleam 程序员为了简洁会省略变量的类型标注。
pub fn main() {
let count: Int = 1
}
在 Gleam 中,字符串使用双引号书写。
pub fn greeting() {
"Hello, world!"
}
注释可以用来给阅读源代码的其他开发者留下说明。Gleam 中的注释是以//开头的单行。
pub fn main() {
// This is a comment
let x = 1
}
在这个练习中,你将编写一些代码,帮你照着最喜欢的食谱做出一份美味的千层面。
一共有五个任务,都与烤千层面所花的时间有关。
定义expected_minutes_in_oven函数,它不接受任何实参,返回千层面应该在烤箱里烤多少分钟。根据食谱,预期的烤箱时间是 40 分钟:
expected_minutes_in_oven()
// -> 40
定义remaining_minutes_in_oven函数,它接受千层面已经在烤箱里烤了多少分钟作为实参,并基于上一个任务中得出的预期烤箱时间,返回千层面还需要在烤箱里烤多少分钟。
remaining_minutes_in_oven(30)
// -> 10
定义preparation_time_in_minutes函数,它接受你往千层面里加了几层作为实参,返回你准备千层面花了多少分钟,假设每准备一层需要 2 分钟。
preparation_time_in_minutes(2)
// -> 4
定义total_time_in_minutes函数,它接受两个实参:第一个实参是你往千层面里加的层数,第二个实参是千层面已经在烤箱里烤了多少分钟。该函数应返回你烹饪千层面总共花了多少分钟,也就是准备时间加上千层面此刻已经在烤箱里烤的时间。
total_time_in_minutes(3, 10)
// -> 16
定义alarm函数,它不接受任何实参,返回一条表示千层面可以吃了的消息。
alarm()
// -> "Ding!"