2011-09-22 2 views
2

이 코드는 무엇을하고 있습니까?Ruby - remove_const : File

class Object 
    remove_const :File 
end 

클래스를 완전히 삭제하나요? 이 부분 코드 뒤에 File.instance_methods을 호출하면 Object/Kernel에서 상속 된 메소드가 표시됩니다.

원래 상태로 되돌릴 수 있습니까? 제 말은, remove_const을 사용한 후에 수업을 원래 상태로 되돌릴 수있는 방법이 있습니까? (이전에 클래스 정의를 저장하지 않고.)

[1] 단어를 사용하여 죄송합니다 "삭제"

+0

"삭제"라는 단어에 무슨 문제가 있습니까? –

+4

Ruby 1.8.7과 Ruby 1.9.2에서 irb에서'remove_constant'를 한 후에''초기화되지 않은 상수 파일 ''을 얻습니다. –

답변

1

설명서에 따라 : http://apidock.com/ruby/Module/remove_const

"미리 정의 된 클래스 (예 : 실제와 같은) 싱글 개체 수 없어 "

따라서이 메서드는 File 클래스를 사용하지 않습니다. 그래서 Fileinstance_methods을 사용할 수 있습니다. 클래스 파일이 아직 존재합니다.

일부 클래스를 제거 할 때 다시 사용하려면이 클래스를 한 번 더로드해야합니다 (또는이 클래스의 코드를 실행해야합니다).

중요 편집 : 그 이론하지만 루비 1.8.7와 루비 1.9.2 모두, 우리는 "초기화되지 않은 상수 파일"을 얻을 것이다 (코멘트에 지적 무엇 undur_gongor와 앤드류 그림 형제) 연습 쇼이었다. 따라서이 경우 설명서가 오도 된 것입니다 ...

+0

@undur_gongor과 똑같은 것을 얻고 있습니다. 따라서 문서가 최소한으로 오해의 소지가있는 것 같습니다. –

+1

http://redmine.ruby-lang.org/issues/5354에서 버그 보고서를 추가했습니다. –

+0

나는 그것을 확인하지 않았고 문서를 신뢰하지 않는다고 바보스럽게 생각합니다. 나는 이것을 시험해 보았고 undur_gongor와 같이 작동하고 Andrew Grimm은 말했다. 나는 내 대답을 편집했다. –