Sự khác biệt giữa `BasicObject#instance_e...
Sự khác biệt giữa `BasicObject#instance_e...
Trong Ruby, cả BasicObject#instance_eval
và BasicObject#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
Gợi ý câu hỏi phỏng vấn
Chưa có bình luận nào