37
이 클래스들의 차이점은 무엇입니까? 그 목적의 차이점은 무엇입니까?Ruby에서 Object와 BasicObject의 차이점은 무엇입니까?
이 클래스들의 차이점은 무엇입니까? 그 목적의 차이점은 무엇입니까?Ruby에서 Object와 BasicObject의 차이점은 무엇입니까?
BasicObject은 Ruby 1.9에 도입되었으며 Object의 부모입니다 (따라서 BasicObject
은 Ruby의 모든 클래스의 상위 클래스입니다).
::new #! #!= #== #__id__ #__send__ #equal? #instance_eval #instance_exec
BasicObject 위임자와 같은 객체 루비의 객체 계층 구조의 독립적 인 계층 구조, 프록시 객체를 만드는 데 사용할 수 있습니다
자체에 거의 방법이있다 클래스 또는 Ruby의 메소드와 클래스에서 네임 스페이스 오염이있는 다른 용도은 피해야합니다.
BasicObject
BasicObject에 커널 (puts와 같은 메소드 포함)이없고 BasicObject가 표준 라이브러리의 네임 스페이스 밖에 있으므로 전체 클래스 경로를 사용하지 않으면 공통 클래스를 찾을 수 없습니다. 내장 커널 기능 세계적으로 접근을 커널 모듈
당신이객체 믹스. 객체 의 인스턴스 방법은 커널 모듈에 의해 정의되어 있지만 ...
Object
방법을 필요로하지 않으며, 당신이 그들을 다른 정의를 해제 할 경우이 경우 개체의 부모로
BasicObject
을 사용할 수 있습니다
:
# when you inherit Object
class Tracer
instance_methods.each do |m|
next if [:__id__, :__send__].include? m
undef_method m
end
# some logic
end
# when you inherit BasicObject
class Tracer < BasicObject
# some logic
end
문서는 첫 번째 부분에 답합니다. BasicObject는 기능이 적어서 Object 메서드 대신 여러 Object 메서드를 제거해야 할 경우 Object 대신 사용할 수 있습니다. –