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

Sự khác biệt giữa `BasicObject#instance_e...

Câu trả lời

Trong Ruby, cả BasicObject#instance_evalBasicObject#instance_exec đều là các phương thức cho phép thực thi mã trong ngữ cảnh (context) của một đối tượng cụ thể. Tuy nhiên, chúng có sự khác biệt quan trọng về cách chúng nhận tham số và thực thi mã.

  • BasicObject#instance_eval: Phương thức này nhận một chuỗi mã Ruby hoặc một khối và thực thi nó trong ngữ cảnh của đối tượng mà nó được gọi. instance_eval chỉ có thể truy cập các biến và phương thức của đối tượng đó. Nếu bạn cung cấp một khối, instance_eval không chấp nhận tham số truyền vào khối đó.

    ruby Copy
    class MyClass
      def initialize
        @my_var = 1
      end
    end
    
    obj = MyClass.new
    obj.instance_eval do
      puts @my_var  # => 1
    end
  • BasicObject#instance_exec: Phương thức này tương t...

senior

senior

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

senior

Từng deploy Rails app lên môi trường production chưa? Dùng Heroku, Docker hay server riêng?

junior

self trong Ruby có ý nghĩa như thế nào trong từng ngữ cảnh?

middle

Sự khác biệt khi gọi một phương thức private so với gọi một phương thức public từ bên trong lớp định nghĩa nó là gì?

Bình luận

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

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