2012-12-17 3 views

답변

0

이 없으며 IO에서 상속됩니다. 따라서 IO::open을 찾아야합니다.

일반적으로 Rubinius 소스 코드를 사용하는 것이 좋습니다. YARV의 소스 코드보다 훨씬 잘 정리되고 훨씬 더 문서화되어 있습니다. 가장 중요한 것은 : Ruby로 주로 쓰여지는 반면, YARV에서는 전체 언어, 전체 핵심 라이브러리 및 표준 라이브러리의 상당 부분이 C로 작성되었습니다.

즉, the implementation of IO::open is completely and utterly boring입니다. 단지 명백한 일을합니다 :

def self.open(*args) 
    io = new(*args) 

    return io unless block_given? 

    begin 
    yield io 
    ensure 
    begin 
     io.close unless io.closed? 
    rescue StandardError 
     # nothing, just swallow them. 
    end 
    end 
end 
1

에서 가져온 코드 주위 grepping 동안 나는 그것을 찾을 수있는 방법을 발견했습니다. 그래서 Ruby 코드를 찾을 수 없습니다.

루트 폴더의 file.c에있는 것처럼 보입니다. 모듈에는 다른 C 모듈 인 IO 모듈이 포함되어 있으며 동일한 위치에 io.c에 있습니다. 이름이 rb_file_open으로 시작하는 함수를 찾으십시오.