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

middle

Sự khác biệt giữa Module#remove_methodModule#undef_method là gì?

senior

Sự khác biệt giữa Object#dup#clone là gì?

middle

Hai ứng dụng của ranges là gì?

Bình luận

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

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