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 đó.

    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

Điều gì xảy ra với một hằng số không được gán giá trị?

senior

Phương thức có phải là một đối tượng không?

middle

Bạn có thể nói gì về một định danh bắt đầu bằng một chữ cái in hoa?

Bình luận

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