Câu hỏi phỏng vấn Ruby
Câu hỏi

Điều gì xảy ra nếu một block nhận hai ...

Câu trả lời

Khi một block trong Ruby được truyền nhiều hơn số đối số mà nó được định nghĩa để chấp nhận, Ruby sẽ tự động gán giá trị nil cho bất kỳ đối số nào không được cung cấp và bỏ qua bất kỳ đối số thừa nào. Nếu block chỉ chấp nhận một đối số nhưng lại nhận hai, đối số thứ hai sẽ bị bỏ qua và không được sử dụng trong block.

Ví dụ:

ruby Copy
[1, 2, 3].each do |a, b|
  puts "a: #{a}, b: #{b}"
end

Trong ví dụ trên, mặc dù block được truyền hai đối số (ab), nhưng phương thức each chỉ truyền một đối số (phần tử của mảng) cho mỗi lần lặp. Kết quả là a sẽ nhận giá trị của phần tử, và b sẽ là nil:

Copy
a: 1, b...
senior

senior

Gợi ý câu hỏi phỏng vấn

middle

Tại sao bạn có thể muốn tránh sử dụng các chuỗi ký tự cố định trong vòng lặp?

senior

Sự khác biệt giữa BasicObject#instance_evalBasicObject#instance_exec là gì?

middle

Sự khác biệt giữa #==#equal? là gì?

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào