このメソッドは、各オブジェクトに固有の整数を示していますか?rubyのobject_idメソッドはメモリの場所を参照していますか?
7
A
答えて
1
あなたは "ruby"の意味に依存します;)jrubyでは、私が知る限り、それは単なる一意の整数です。
また、数字のようなものはメモリの場所ではありません。私はすべての細部を忘れ、誰かがあなたにそれらを与えることを確かめる。
irb(main):020:0> 1.object_id
=> 3
irb(main):021:0> (2-1).object_id
=> 3
1
通常のルビー(MRI 1.8.xと1.9.x)では、それは単なる値です。
これは、多くのパラメータ、値、オブジェクトタイプ、メモリ内の場所の組み合わせでもIronRubyの
6
の場合です。
さらに読むことができますhere
4
これはメモリの場所を直接参照するものではなく、特定のRubyの実装に固有のものです。 Cコードを読むことができる場合は、Ruby 1.8.6ソースのgc.c
のrb_obj_id
とid2ref
のメソッドを見るのが有益です。 Ruby Hacking Guide chapter 2の部分翻訳の「VALUEに埋め込まれたオブジェクト」セクションの「エンコーディング」についてさらに読むことができます。
+0
[MRIソースにリンク](http:// rxr。 whitequark.org/mri/source/gc.c#3158) –
3
それはあなたが使用してオブジェクトIDの逆引き参照を実行できることは注目に値します:たとえば
ObjectSpace._id2ref(object_id)
を:
ObjectSpace._id2ref(0) #=> false
ObjectSpace._id2ref(1) #=> 0
ObjectSpace._id2ref(2) #=> true
ObjectSpace._id2ref(3) #=> 1
ObjectSpace._id2ref(4) #=> nil
関連する問題
- 1. Rubyのクラスのメソッド参照
- 2. なぜ2つの一意のオブジェクトのインスタンス変数がメモリの場所を参照していますか?
- 3. 変数の参照とアドレス(メモリの場所)
- 4. 他の場所からのDLL参照
- 5. なぜRubyのメソッドへの参照は ``メソッド `"ではなく ``メソッド '"と書かれていますか?
- 6. geokitで場所を参照
- 7. Visual C++プロパティシートは、プロジェクトの場所を参照できますか?
- 8. メソッドは、値への参照配列を参照しています
- 9. 間違った場所を参照している構成ファイル。
- 10. 別の場所からbashスクリプトを実行していますが、スクリプトのある場所を参照しています
- 11. Ruby on Railsで現在のユーザを参照しています
- 12. 別のRubyコードファイルでメソッドを参照するには?
- 13. PHPのメモリ参照
- 14. HTMLページの特定の場所を参照する方法は?
- 15. アンドロイド:場所がヌルオブジェクト参照エラーを返します
- 16. with_itemsのリストを定義する場所:参照するには?
- 17. rewritecond regexのrewriterule参照グループを参照していますか?
- 18. antファイル内からantスクリプトの場所を参照する
- 19. PlayN.Logからの出力を参照する場所
- 20. 2つのメソッド参照が同じメソッドを参照しているかどうかを確認する方法?
- 21. Rubyシンボル#to_procは1.9.2-p180の参照をリークしますか?
- 22. Masterpageに依存しているaspxページのjavascriptファイルを参照する場所はありますか?
- 23. Instanceメソッド参照インスタンス引数の場合
- 24. JavaFX8 WebEngineのexecuteScript( "window")メソッドはJavaScriptのウィンドウオブジェクトを参照していますか?
- 25. java8:別のメソッド参照からのメソッド参照
- 26. プロパティファイル内のリソースからのスプリングブート参照ファイルの場所
- 27. ヌルオブジェクト参照を参照しようとしていますか?
- 28. このコールバックは参照外のクロージャを参照していますか?
- 29. Java - リストイテレータでリンクリスト内の特定の場所への参照を返します
- 30. 参照はC++でメモリを占有しますか?
Fixnumかのobject_idビットに格納されている左へとシフトされました最下位ビットがセットされています。http://stackoverflow.com/questions/2402228/accessing-objects-memory-address-in-ruby/2402440#2402440 あなたの '(2-1)'は意味がありません。代わりに '(4711 >> 1).object_id' –