self.attribute
と@attribute
でインスタンス属性へのアクセスの違いを説明できる人はいますか?インスタンス変数への直接アクセスとアクセッサメソッドの使用
77
A
答えて
97
self.attribute
は、attribute
というメソッドを呼び出します。
self.attribute = value
は、value
という引数を使用してattribute=
というメソッドを呼び出します。
@attribute
および@attribute = value
インスタンス変数@attribute
の値を取得または設定します。
基本的に2つの全く異なるものです。
は、しかし、あなたがattr_accessor :attribute
を呼び出す場合には、@attribute
と@attribute = value
を設定する方法attribute=(value)
を返すようにする方法attribute
を定義します。その場合、違いはありません。
1
「へのアクセスインスタンス変数は、直接の約2倍の速さのアクセサメソッドでそれらにアクセスするよりも、」
チェックアウト:http://greyblake.com/blog/2012/09/02/ruby-perfomance-tricks/
関連する問題
- 1. Javascript closure:モデルへの直接アクセスと変数の使用の違い
- 2. インスタンス変数に直接アクセスするときにself-> ivarを使用する
- 3. 直接のByteBufferへの複数のアクセス
- 4. Rubyインスタンス変数へのアクセス
- 5. レールとルビのインスタンス変数へのアクセス
- 6. あるインスタンスから別のインスタンスへのインスタンス変数へのアクセス
- 7. Herokuへの直接FTPアクセス?
- 8. CreateDIBitmapビットへの直接アクセス
- 9. azureファイルストレージへの直接アクセス
- 10. EF接合テーブルへの直接アクセス
- 11. 配列内のインスタンス変数へのアクセス
- 12. インスタンス変数の値へのアクセスscala
- 13. rspecのインスタンス変数へのアクセス
- 14. Silverlightを使用したSQLへの直接アクセス
- 15. Rails + Vue:インスタンス変数へのアクセス
- 16. phpファイルへの直接アクセスの防止
- 17. jspページへの直接アクセスの拒否
- 18. オブジェクトのフルストリング表現への直接アクセス
- 19. STLの要素への直接アクセス
- 20. ルビーでインスタンス変数を直接使用するのは悪いフォームですか?
- 21. linuxフレームバッファへの直接アクセス - コピーエリア
- 22. RecyclerViewから直接ViewHolderへのアクセス
- 23. Googleコンテナエンジン、ポッドへの直接アクセス
- 24. スリム3ファイルへの直接アクセス
- 25. C++ ATL COMオブジェクトへの直接アクセス
- 26. anomからのインスタンス変数へのアクセス。コーヒースクリプトの関数
- 27. 他の関数からのインスタンス変数へのアクセス
- 28. AsyncTask内のインスタンス変数へのアクセスまたは変更
- 29. 親関数からのインスタンス変数へのアクセス
- 30. ブロックの直接アクセス
注それは、一般的にあなたがない限り( 'self.'を使用することが推奨されていることgetter/setterメソッドを記述しています)。現在、あなたは 'attr_accessor'を持っています。これは後でインスタンス変数を取得/設定するだけではなく、アクセサメソッドを変更してリファクタリングやバグを防ぐためです。 (あるいは他の人があなたの仕事にパッチやサブクラスをつけている場合) – Phrogz
Phrogzが話しているバグの1つは、単にself.attribute = _____の代わりにattribute = _____を呼んでインスタンス変数の代わりにローカル変数を設定している場合です。 –