どのように実装されているのか調べてみましたが、 https://github.com/ruby/rubyFile.open()
から取得したコードをググってみたら見つかりませんでした
質問する
188 次
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 に答える