Menu
CoddyTech

什么是块?

本课属于 Coddy Ruby 学习旅程的“逻辑与流程”单元。第 15 课,共 56 课。

你已经写过代码块了。每次你写 each do |x| ... end 时,do 和 end 之间的部分都是一个代码块:传递给方法的一段代码。

[1, 2, 3].each do |n|
  puts n * 2
end

这里,each 是数组上的方法,do |n| ... end 是代码块。each 会对每个元素运行一次代码块,并将该元素作为 n 传入。

块不是存储在变量中的独立对象,而是直接与方法调用绑定。方法要么接收一个块,要么不接收,而大多数迭代方法(each、map、select、times)都是为接收一个块而设计的。

3.times do |i|
  puts "hi #{i}"
end

不带代码块调用方法,会改变它的行为。不带代码块的 [1,2,3].map 会返回一个枚举器,而不是转换后的数组,因此代码块是方法含义的一部分。

challenge icon

挑战

入门

从输入中读取一个整数 n。使用 times 方法和代码块,为 i 从 0 到 n - 1 的每个值打印消息 Iteration <i>。

输入 3 时,输出为:

Iteration 0
Iteration 1
Iteration 2

亲手试试

n = gets.to_i

# TODO:用带代码块的 n.times 打印每次循环的结果
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: Ruby 在线编译器