誰かが昨日スプラット演算子について尋ねました。私はCやRubyで書かれたソースコードを見たいと思っていましたか?それはどこにありますか?Ruby、Splatのソースコード?
答えて
Ruby 2.4以降の主要なRubyドキュメントでは、splat演算子の記述が不適切です。これは言語の中心的な機能ですが、スプラット演算子のソースコードはvm_eval.c
の下にrb_yield_splat(VALUE values)
の下にあります。
rb_yield_splat
ためunit testは何が起こっているのか、それが明確になります。そのため
it "yields with passed array's contents" do
ret = nil
@s.rb_yield_splat([1, 2]) { |x, y| ret = x + y }
ret.should == 3
end
速いGoogle検索では、eval.cに実装されています。ファイル内のいくつかの場所で "splat"への参照を見つけることができますが、私はRubyの内部的な働きについて十分理解していません。
おかげで、マーティン。 Rubyの世界を理解しようとしています。だから基本的に、それがルビーでレールでなければ、ソースはおそらくRubyにはないのです。 –
splat演算子は、ライブラリ機能ではなく、コアのRuby言語の一部です。 #to_aryメソッドを定義しているオブジェクトであれば使用できますが、複数の値を(a、* b = 1,2,3,4,5'のように)1つの変数に集めて使用すると、常にアレイ。 – rampion
@Rampion、それに感謝します。だから私の本当の疑問は次のようなものだと思う:「必要な」ライブラリを必要としない "ライブラリの機能"(Rubyのソースコード)があるか? –
- 1. Ruby - splatとsend()の混乱
- 2. Ruby:ソースコード
- 3. RubyソースコードからJavaソースコードへの変換
- 4. Powershell splat destroy変数
- 5. Rubyのバージョンに応じて配列または文字列としてSplat?
- 6. Rubyブロックのソースコードを印刷する
- 7. Splat(*)演算子とattr_extras gem
- 8. Rubyでソースコードを取得するには?
- 9. レールで生成されたrubyソースコード
- 10. SplatライブラリとXamarin.Macでの型解決
- 11. Rubyのsplat引数が常に使われていないのはなぜですか?
- 12. このRubyのソースコードの抜粋を分析する方法
- 13. rubyファイルのソースコードを文字列/テキスト形式で取得する
- 14. ruby jarのソースコードを基準にイメージをロードする方法
- 15. Eclipseでruby splat演算子コンパイルエラーが発生しましたが、コマンドラインでうまく動作します
- 16. cakephp3の構文でのphp 5.6のsplat演算子のエラー
- 17. Chromeモバイルのソースコードのソースコード
- 18. BASHスクリプト内でLuaやRubyのソースコードを使用できますか?
- 19. ソースコード
- 20. JSのソースコードをソースコードで表示
- 21. のgetInputStream()のソースコード
- 22. Matlabにsplat演算子(または同等のもの)がありますか?
- 23. Ruby Gemsか、ソースコードをベンダー/資産に入れるだけですか?
- 24. Subversionサーバーのソースコード
- 25. sun.miscのソースコード/ドキュメント*
- 26. は、レールのソースコード
- 27. URLのソースコード
- 28. JDK1.8.0_121のソースコード
- 29. リバースエンジニアリングアセンブリのCソースコード
- 30. アンドロイドのソースコード
それは素晴らしいですが、ソースがどこにあるのかはどうでしたか? –
Ruby gitリポジトリの[検索しました](https://github.com/ruby/ruby/search?l=C&q=splat&type=&utf8=%E2%9C%93)。検索をCファイルに制限し、見つかるまでソースコードを読んでください。 – anothermh
うわー、それは素晴らしいです。ありがとうございました。 –