본문 바로가기
개발노트

[ruby]class_eval과 module_eval의 차이

by 호릭 2020. 12. 20.

결론부터 말하면 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

댓글