どのように実装されているのか調べてみましたが、 https://github.com/ruby/rubyFile.open()から取得したコードをググってみたら見つかりませんでした
2 に答える
1
Fileクラスは Ruby モジュールではなく C モジュールです。そのため、Ruby コードは見つかりません。
file.cルートフォルダーにあるようです。モジュールには、IO別の C モジュールでありio.c、同じ場所にあるモジュールが含まれます。名前が で始まる関数を探しrb_file_openます。
于 2012-12-17T23:52:14.880 に答える
0
はなくFile::open、 から継承されていIOます。したがって、を探す必要がありますIO::open。
一般に、これには Rubinius のソース コードを使用することをお勧めします。YARV のソース コードよりもはるかによく整理され、文書化されています。最も重要なことは、ほとんどが Ruby で記述されているのに対し、YARV では言語全体、コア ライブラリ全体、および標準ライブラリの重要な部分が C で記述されていることです。
そうは言っても、の実装IO::openは完全にまったく退屈です。それは明らかなことをするだけです:
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
于 2012-12-18T05:16:31.937 に答える