Menu
CoddyTech

Khối lệnh là gì?

Thuộc phần Logic và luồng xử lý trong hành trình Ruby của Coddy. Bài học 15 trên 56.

Bạn đã viết các khối lệnh trước đó. Mỗi lần bạn viết each do |x| ... end, phần nằm giữa do và end là một khối lệnh (block): một đoạn code được truyền vào một phương thức.

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

Ở đây, each là một phương thức của mảng, còn do |n| ... end là khối lệnh. each chạy khối lệnh một lần cho mỗi phần tử và truyền phần tử đó vào n.

Block không phải là đối tượng riêng biệt được lưu trong biến, mà gắn trực tiếp với lời gọi phương thức. Một phương thức có nhận block hoặc không, và hầu hết các phương thức lặp (each, map, select, times) đều được thiết kế để nhận một block.

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

Gọi một phương thức mà không truyền khối lệnh sẽ làm thay đổi cách nó hoạt động. [1,2,3].map khi không có khối lệnh sẽ trả về một bộ liệt kê thay vì một mảng đã được biến đổi, vì vậy khối lệnh là một phần trong ý nghĩa của phương thức.

challenge icon

Thử thách

Người mới

Đọc một số nguyên n từ đầu vào. Dùng phương thức times với một khối lệnh để in ra thông báo Iteration <i> cho mỗi giá trị của i từ 0 đến n - 1.

Với đầu vào là 3, đầu ra là:

Iteration 0
Iteration 1
Iteration 2

Tự làm thử

n = gets.to_i

# TODO: dùng n.times với một khối lệnh (block) để in ra mỗi lần lặp (iteration)
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Logic và luồng xử lý

Tự luyện tập: Trình biên dịch Ruby online