Written by Gilang Mahardhika on 15 Jun 2013.
class_eval
dan instance_eval
pada ruby memungkinkan anda untuk mengevaluasi class atau objek tertentu. Dengan menggunakan class_eval
kita dapat membuat sebuah instance method baru diluar kelas tersebut.
contohnya :
class Car
end
Car.class_eval do
def steer(direction)
"Steering #{direction}"
end
end
car = Car.new
car.steer("left")
# Hasilnya
"Steering left"
Dari kode tersebut bisa disimpulkan bahwa kita bisa membuat sebuah instance method
baru dari class Car
diluar dari kelas tersebut.
Sedangkan instance_eval
memungkinkan kita untuk membuat class method
diluar kelas tersebut. Sama halnya dengan kode diatas, misalkan kita akan membuat class method dari class Car
, berikut contohnya :
class Car
end
Car.instance_eval do
def print_name(name)
"Car name is #{name}"
end
end
Car.print_name("Rubicon")
# Hasilnya
"Car name is Rubicon"