결론부터 말하면 class_eval과 module_eval의 작동 차이는 없다.
module_eval의 alias가 class_eval이다.
실제 두 함수를 사용할 때 차이점이 생긴다.
class_eval은 객체의 attribute를 다룰 때 사용한다.
예를 들어 객체의 암호화된 필드가 있다면 그 암호화된 필드를 부를 때 자동으로 복호화하는 함수를 만들 수 있다.
module_eval은 객체의 method를 만들 때 사용한다.
class Thing
end
#클래스를 만든다.
a = %q{def hello() "Hello there!" end}
Thing.module_eval(a)
# module_eval을 사용해서 hello()라는 함수를 Thing에 추가한다.
puts Thing.new.hello()
=> Hello there!
'개발노트' 카테고리의 다른 글
scp (0) | 2020.12.29 |
---|---|
grep (0) | 2020.12.29 |
form 태그의 method (0) | 2020.12.01 |
ruby의 send 함수 (0) | 2020.12.01 |
[ruby]callback과 filter를 거치지 않고 데이터의 값 업데이트 하기 (0) | 2020.08.09 |
댓글