問題タブ [instance-variables]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cocoa - NSCopyingを使用してプライベートインスタンス変数をコピーするためのベストプラクティス
ここで明らかな何かが欠けている可能性がありますが、オブジェクトの1つにNSCopyingを実装しています。そのオブジェクトには、オブジェクトの外部で使用してはならないため、ゲッターを介して公開されないプライベートインスタンス変数があります。
の実装ではcopyWithZone:
、新しいインスタンスをalloc / initする必要がありますが、現在のインスタンスと一致するようにその状態を設定する必要もあります。明らかに現在のプライベート状態に内部からアクセスできますcopyWithZone:
が、その状態のアクセサーがないため、新しいオブジェクトに設定することはできません。
データのプライバシーを損なわずに、これを回避する標準的な方法はありますか?
ありがとう。
c# - C#同じクラスの関数でインスタンス変数をローカル変数にコピーする
最近、あるオープン ソース プロジェクトのコードを調べたところ、この種のコードが多数見つかった:
インスタンス変数のコピーを作成するメリットはありますか?
actionscript-3 - フラッシュ (AS3) ですべてのメンバー変数を取得することは可能ですか?
AS3 のすべてのメンバー変数を取得しようとしています。次に、foreach をさまざまな方法で処理したいと考えています。名前が必要です。それが何らかのタイプのコレクションである場合は、そのコレクションもループしたいと思います。私は基本的に、ややカスタムな方法でシリアル化しようとしています。ありがとう!
ruby - これら2つのRubyクラス初期化定義の違いは何ですか?
私はRubyに関する本を執筆していますが、著者は、本の前のセクションで使用したものとは少し異なる形式を使用してクラス初期化定義を記述しました。次のようになります。
この本の前のセクションでは、次のように定義されていました。
最初の例のようにsetterメソッドを使用することと、2番目の例のようにインスタンス変数を使用することの間に機能的な違いはありますか?どちらも機能しているようです。それらを混ぜ合わせても機能します:
ruby - Rubyクラスのインスタンス変数と継承
と呼ばれるRubyクラスがありLibraryItem
ます。このクラスのすべてのインスタンスに属性の配列を関連付けたいと思います。この配列は長く、次のようになります
これらの属性は実際にはメソッドであるとは想定されておらず、aが持つ属性のリストにすぎないことに注意してくださいLibraryItem
。
次に、のすべての属性を含むが、さらに多くの属性を含む属性の配列を持つ、 LibraryItem
calledのサブクラスを作成したいと思います。LibraryBook
LibraryItem
最終的には、LibraryItem
それぞれ独自のバージョンの配列を持つサブクラスがいくつか必要になります@attributes
が、それぞれがに追加されLibraryItem
ます@attributes
(たとえば、、、LibraryBook
などLibraryDVD
)LibraryMap
。
だから、これが私の試みです:
これは動作しません。エラーが発生します
それがうまくいくとしたら、私はこのようなものが欲しいでしょう
出力する
(2010年5月2日追加)これに対する1つの解決策は@attributes
、単純なインスタンス変数を作成しLibraryBoot
てから、initialize
メソッドにの新しい属性を追加することです(これは、回答の1つでdemasによって提案されました)。
これは確かに機能しますが(実際、私がずっとやってきたことです)、これは最適ではないため、満足していません。オブジェクトが作成されるたびに、これらの不変の配列を作成する必要があるのはなぜですか。
私が本当に望んでいるのは、親クラスから継承できるクラス変数を用意することですが、子クラスで変更しても、親クラスでは変更されません。
javascript - ほとんどのOOP言語では、インスタンスメソッドの「i」は最初にローカルを参照し、次にグローバルを参照しますが、インスタンス変数またはクラス変数を参照することはありませんか?
次のコードでは:
何が警告されていますか? 答えはこの質問の最後にあります。
i
アラート呼び出しでは、ローカル変数 (存在する場合) またはグローバル変数のいずれかを参照していることがわかりました。ローカルもグローバルも定義されていない場合でも、インスタンス変数またはクラス変数になる方法はありません。インスタンス変数を参照するにi
は が必要this.i
で、クラス変数を参照するi
には が必要Circle.i
です。これは、ほとんどすべてのオブジェクト指向プログラミング言語に実際に当てはまりますか? 例外はありますか?ローカルもグローバルもない場合、インスタンス変数を検索してからクラス変数のスコープを検索する場合はありますか? (または、この場合、それらはスコープと呼ばれますか?)
答えは: 10 が警告されています。
ruby-on-rails - Railsですべてのコントローラー変数を一度に検査する方法はありますか?
私は約10個程度のインスタンス変数を持つ大きなコントローラーメソッドを模索しています。それらのいくつかはbefore_filterメソッドで設定され、他のいくつかはメソッド自体の内部で設定されます。私はそれらをプットで検査したいのですが、それらすべてを例として書きたくありません:
@
現在のメソッドでこれまでに符号が設定されたすべてのインスタンス変数を表示するジェネリックメソッドはありますか?そうでない場合、putsステートメントにすべてを書き込むことなく、一度にすべてを検査する次善の方法は何ですか?
ruby-on-rails - Rubyで、配列ではなくハッシュでインスタンス変数を取得するにはどうすればよいですか?
Rubyクラスがあります。そのクラスのメソッドへの引数からインスタンス変数を取得したいと思います。すべてのインスタンス変数を配列として取得できます。
arg
ただし、具体的には、という名前のインスタンス変数を取得したいと思います。
どうすれば計算できhash_of_instance_variables
ますか?
ruby - 親クラスのインスタンス変数にアクセスする
これはどのように機能しますか?
基本的に、子クラスのルックアップで使用するには親クラスの値が必要ですが、より良い方法がある場合は、明示的に渡したくありません。親のインスタンス変数は、子クラスでは完全にアクセスできませんか?それとも、これは単に貧弱な階層設計ですか?
ruby-on-rails - RJSを使用してinnerHTMLを実際のライブインスタンス変数に置き換える
私は一生、RJSに要素のinnerHTMLをインスタンス変数の属性に置き換えることはできません。@thing.name
私はすべてのコードを示します(実際のプロジェクトから簡略化されていますが、それでも完全です)、そして解決策が誰かに明白な額平手打ちになることを願っています...
RoRでは、ランダムな漢字を表示する簡単なページを作成しました。
これは、Word
属性chinese
と。を持つオブジェクトですenglish
。
「これは何ですか?」というタイトルのリンクをクリックします。english
RJSを使用して属性を明らかにします。現在、「これは何ですか?」も非表示になっています。リンクして「別の方法を試してみませんか?」ページをリロードするだけのリンクで、新しいランダムな文字で効果的に最初からやり直します。
これは問題ありませんが、独自のデータベースクエリを作成する他の要素がページにあるため、ページの残りの部分はそのままにして、AJAX呼び出しによって新しいランダムな文字をロードしたいと思います。
これは予想よりも難しいことが判明しました。link_remote_toとpage.replace_htmlを使用してhtmlを置き換えるのに問題はありませんが、インスタンス変数を含むものを表示することはできません。
私はWordリソースとPageリソースを持っています。そこにはホームページがあり、そこでこのすべての楽しみが起こります。PagesControllerでは、ランダムな単語を取得する方法をいくつか作成しました。どちらも問題なく動作します...
コードは次のとおりです。
余談ですが、SQL呼び出し:limit => 100
は、これらのランダムな単語を循環する方法を考えた場合に備えて使用します。今のところ、それは役に立ちません。また、私が知る限り、「rand()」はMySQL固有です。
ホームページビュー(HAML)には、次のものがあります。
この場合の#は、コメントではなくdiv(指定されたID)を表すことに注意してください。これはHAMLであるためです。
「キャラクター」の部分は次のようになります(本当の理由はありませんが、erbです)。
reveal_character.rjsファイルは次のようになります。
それはすべて完全にうまく機能します。
しかし、に変換して、「文字」要素を新しいものに置き換えるRJSテンプレートをポイントしようとするとlink_to "try another?"
、 innerHTMLを静的テキストに置き換えた場合にのみ機能します。link_to_remote
そこにインスタンス変数を渡そうとすると、機能しません。
たとえば、Pages#home...の下に2番目のランダムな単語を定義したとします。
そこに追加@random_second = @random_words[2]
します。
次に、ホームページビューで、「別の方法を試してみませんか?」を置き換えます。リンク(以前はを指していましたroot_path
)、これで:
app / views / words / second_character.rjsで新しいRJSテンプレートを作成します。次のような簡単なテストで、機能していることがわかります。
しかし、これに変更すると:
nilオブジェクトをフィードしたというエラーが表示されます。
app / views / words /second_character.rjsの1行目のActionView:: TemplateError(nil:NilClassの未定義のメソッド `english_name'):1:page.replace_html(" character "、"#{@ random_second.english} ")
もちろん、実際に@ random_second、@ random_thirdなどを無限にインスタンス化することは、実際のアプリではばかげています(最終的には、ページをリロードせずに新しいランダムレコードを取得し続けるためのより良い方法を見つけます)が、ポイントはここでインスタンス変数を機能させる方法がわかりません。
これは、次のように、指定したオブジェクトを含むパーシャルをレンダリングするという私の理想的なソリューションにさえ近づいていません。
インスタンス変数を直接機能させることができないため、パーシャルを介してインスタンス変数を機能させることはできません。
私は次のようなさまざまなことを試しました:
また
私はこれらをあちこちに追加しようとしました-link_to_remote
最も明白なオプションで-そしてパラメータで何が渡されるかを研究しましたが、役に立ちませんでした。この時点で、自分が何をしているのかわからないことに気づきます。
これが私の最初の質問です。簡潔にするのではなく、必要なすべてのコードを提供する側に誤りがありました。どんな助けでも大歓迎です。