나는 File.open()
구현했지만, 난이 File
클래스는 C 모듈이 아닌 루비 하나입니다 https://github.com/ruby/rubyFile.open은 Ruby에서 어떻게 구현됩니까?
0
A
답변
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
으로 시작하는 함수를 찾으십시오.
관련 문제
- 1. @private는 어떻게 구현됩니까?
- 2. 채팅은 일반적으로 어떻게 구현됩니까?
- 3. Set.toString()은 어떻게 구현됩니까?
- 4. WCF에서 콜백은 어떻게 구현됩니까?
- 5. pthread_join은 어떻게 구현됩니까?
- 6. 반복기는 Java로 어떻게 구현됩니까?
- 7. 파이썬에서 rangeiterator는 어떻게 구현됩니까?
- 8. "const"는 어떻게 구현됩니까?
- 9. System.Net은 어떻게 구현됩니까?
- 10. DOM 파서는 어떻게 구현됩니까?
- 11. OpenID는 어떻게 구현됩니까?
- 12. 작업 예약은 어떻게 구현됩니까?
- 13. MarshalByRefObject는 어떻게 구현됩니까?
- 14. VTBL은 Java에서 어떻게 구현됩니까?
- 15. 일반적으로 힙은 어떻게 구현됩니까?
- 16. Firefox 알림은 어떻게 구현됩니까?
- 17. 코 루틴은 어떻게 구현됩니까?
- 18. Spree.config는 어떻게 구현됩니까?
- 19. sarcmark는 어떻게 구현됩니까?
- 20. HttpSession은 어떻게 구현됩니까?
- 21. BigDecimal은 어떻게 구현됩니까?
- 22. ESB는 어떻게 물리적으로 구현됩니까?
- 23. Monitor 클래스는 어떻게 구현됩니까?
- 24. MPI 입출력은 어떻게 구현됩니까?
- 25. neo4j 지속성은 어떻게 구현됩니까?
- 26. 조건 변수는 어떻게 구현됩니까?
- 27. \ b는 어떻게 구현됩니까?
- 28. 프로토콜은 내부적으로 어떻게 구현됩니까?
- 29. ModelResource obj_get은 어떻게 구현됩니까?
- 30. OS 수준에서 수면은 어떻게 구현됩니까?