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

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

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

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?

middle

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

middle

Sự khác biệt giữa throw/catchraise/rescue là gì?

Bình luận

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

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