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

Sự khác biệt giữa việc gọi supersuper() là gì?

Câu trả lời

Trong Ruby, từ khóa super được sử dụng để gọi phương thức cùng tên từ lớp cha (superclass). Sự khác biệt chính giữa việc gọi supersuper() nằm ở việc truyền tham số cho phương thức của lớp cha:

  • super: Khi gọi super mà không có tham số nào đi kèm, Ruby sẽ tự động truyền tất cả các tham số mà phương thức con nhận được vào phương thức cùng tên của lớp cha
  • super(): Khi gọi super() với cặp dấu ngoặc đơn, bạn đang yêu cầu Ruby gọi phương thức của lớp cha mà không truyền bất kỳ tham số nào. Điều này hữu ích khi các tham số mà phương thức con nhận được không khớp với những gì phương thức của lớp cha mong đợi

Khi nào sử dụng "super" và "super()"

  • Sử dụng super khi bạn muốn phương thức của lớp cha nhận cùng một tham số mà phương thức con đã nhận.
  • Sử dụng super() khi phương thức của lớp cha không mong đợi tham số nào hoặc bạn muốn ghi đè hành vi của phương thức con mà không truyền tham số nào

Ví dụ

class Parent
  def say(message)
    p message
  end
end

class Child < Parent
  def say(me...
middle

middle

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

middle

Tại sao bạn lại muốn đặt bí danh cho một phương thức trong Ruby?

senior

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

senior

Một block có phải là một đối tượng không?

Bình luận

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

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