Menu
CoddyTech

if / unless nội tuyến

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

Ruby cho phép bạn đặt if và unless ở cuối một câu lệnh duy nhất, như một dạng bổ nghĩa trên một dòng. Cách viết này gần giống tiếng Anh.

puts "Adult" if age >= 18
puts "Save your work" unless saved

Điều này cũng giống như:

if age >= 18
  puts "Adult"
end

unless saved
  puts "Save your work"
end

Dạng viết trên cùng một dòng rất hữu ích cho các kiểm tra kiểu bảo vệ ở đầu phương thức hoặc các cập nhật có điều kiện chỉ thực hiện một lần trong vòng lặp:

return if name.nil? || name.empty?

counts = Hash.new(0)
words.each do |w|
  counts[w] += 1 unless w.start_with?("#")
end

Giống như toán tử ba ngôi, hãy dùng các từ bổ nghĩa nội tuyến cho câu lệnh ngắn. Nếu phần thân có nhiều hơn một dòng, hãy viết khối if thực sự.

challenge icon

Thử thách

Dễ

Đọc một danh sách số nguyên được phân tách bằng dấu phẩy. Với mỗi số, chỉ in một dòng khi số đó khác 0:

  • In positive: <n> if n > 0
  • In negative: <n> unless n >= 0

Cả hai dòng đều phải dùng dạng bổ nghĩa nội tuyến, không dùng khối if hay else. Sau vòng lặp, in Skipped zeros: <count>, trong đó count là số lượng số 0, cũng được tính mà không dùng khối if (dùng count).

Với đầu vào 3,-2,0,5,0, đầu ra là:

positive: 3
negative: -2
positive: 5
Skipped zeros: 2

Tự làm thử

numbers = gets.chomp.split(",").map(&:to_i)

# TODO: in ra từng số bằng `if` / `unless` viết trên cùng một dòng
# TODO: dùng count để in ra Skipped zeros: <n>
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