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. インスタンス変数に直接アクセスするときにself-> ivarを使用する
- 2. Rubyインスタンス変数へのアクセス
- 3. Herokuへの直接FTPアクセス?
- 4. Silverlightを使用したSQLへの直接アクセス
- 5. jspページへの直接アクセスの拒否
- 6. phpファイルへの直接アクセスの防止
- 7. オブジェクトのフルストリング表現への直接アクセス
- 8. ルビーでインスタンス変数を直接使用するのは悪いフォームですか?
- 9. C++ ATL COMオブジェクトへの直接アクセス
- 10. linuxフレームバッファへの直接アクセス - コピーエリア
- 11. anomからのインスタンス変数へのアクセス。コーヒースクリプトの関数
- 12. AsyncTask内のインスタンス変数へのアクセスまたは変更
- 13. 親関数からのインスタンス変数へのアクセス
- 14. ブロックの直接アクセス
- 15. Apache RewriteMapを使用してファイルへの直接アクセスを防止する
- 16. コンポーネントVMのメインVue.jsインスタンスからの変数へのアクセス
- 17. インスタンス変数&self.variableの使用
- 18. インスタンス変数を直接設定していますか?
- 19. スーパークラスのインスタンス変数へのアクセス、適切な形式
- 20. GORMはhasMany関係のインスタンスに直接アクセスします
- 21. CvCreateMatND直接アクセス
- 22. インスタンス変数を使用せずにメソッドループ内の変数にアクセスするruby
- 23. WCFと直接SQLアクセスのパフォーマンス
- 24. JSONオブジェクトのクライアント側のプロパティへの直接アクセス
- 25. AS3:XMLコードをAS3に直接書き込むときのアクセス変数
- 26. フォルダへの直接アクセスを拒否する(スルーアプリのみ許可)
- 27. CakePhpのディレクトリへの直接アクセスを無効にするには?
- 28. Java配列:配列内のコンポーネントへの直接アクセス
- 29. Railsコントローラメソッドへの直接URLアクセスの防止
- 30. インスタンス変数 '変数' クラスメソッドエラーでアクセス
注それは、一般的にあなたがない限り( 'self.'を使用することが推奨されていることgetter/setterメソッドを記述しています)。現在、あなたは 'attr_accessor'を持っています。これは後でインスタンス変数を取得/設定するだけではなく、アクセサメソッドを変更してリファクタリングやバグを防ぐためです。 (あるいは他の人があなたの仕事にパッチやサブクラスをつけている場合) – Phrogz
Phrogzが話しているバグの1つは、単にself.attribute = _____の代わりにattribute = _____を呼んでインスタンス変数の代わりにローカル変数を設定している場合です。 –