問題タブ [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.

0 投票する
3 に答える
1426 参照

cocoa - NSCopyingを使用してプライベートインスタンス変数をコピーするためのベストプラクティス

ここで明らかな何かが欠けている可能性がありますが、オブジェクトの1つにNSCopyingを実装しています。そのオブジェクトには、オブジェクトの外部で使用してはならないため、ゲッターを介して公開されないプライベートインスタンス変数があります。

の実装ではcopyWithZone:、新しいインスタンスをalloc / initする必要がありますが、現在のインスタンスと一致するようにその状態を設定する必要もあります。明らかに現在のプライベート状態に内部からアクセスできますcopyWithZone:が、その状態のアクセサーがないため、新しいオブジェクトに設定することはできません。

データのプライバシーを損なわずに、これを回避する標準的な方法はありますか?

ありがとう。

0 投票する
6 に答える
3056 参照

c# - C#同じクラスの関数でインスタンス変数をローカル変数にコピーする

最近、あるオープン ソース プロジェクトのコードを調べたところ、この種のコードが多数見つかった:

インスタンス変数のコピーを作成するメリットはありますか?

0 投票する
2 に答える
945 参照

actionscript-3 - フラッシュ (AS3) ですべてのメンバー変数を取得することは可能ですか?

AS3 のすべてのメンバー変数を取得しようとしています。次に、foreach をさまざまな方法で処理したいと考えています。名前が必要です。それが何らかのタイプのコレクションである場合は、そのコレクションもループしたいと思います。私は基本的に、ややカスタムな方法でシリアル化しようとしています。ありがとう!

0 投票する
1 に答える
668 参照

ruby - これら2つのRubyクラス初期化定義の違いは何ですか?

私はRubyに関する本を執筆していますが、著者は、本の前のセクションで使用したものとは少し異なる形式を使用してクラス初期化定義を記述しました。次のようになります。

この本の前のセクションでは、次のように定義されていました。

最初の例のようにsetterメソッドを使用することと、2番目の例のようにインスタンス変数を使用することの間に機能的な違いはありますか?どちらも機能しているようです。それらを混ぜ合わせても機能します:

0 投票する
9 に答える
21481 参照

ruby - Rubyクラスのインスタンス変数と継承

と呼ばれるRubyクラスがありLibraryItemます。このクラスのすべてのインスタンスに属性の配列を関連付けたいと思います。この配列は長く、次のようになります

これらの属性は実際にはメソッドであるとは想定されておらず、aが持つ属性のリストにすぎないことに注意してくださいLibraryItem

次に、のすべての属性を含むが、さらに多くの属性を含む属性の配列を持つ、 LibraryItemcalledのサブクラスを作成したいと思います。LibraryBookLibraryItem

最終的には、LibraryItemそれぞれ独自のバージョンの配列を持つサブクラスがいくつか必要になります@attributesが、それぞれがに追加されLibraryItemます@attributes(たとえば、、、LibraryBookなどLibraryDVDLibraryMap

だから、これが私の試みです:

これは動作しません。エラーが発生します

それがうまくいくとしたら、私はこのようなものが欲しいでしょう

出力する

(2010年5月2日追加)これに対する1つの解決策は@attributes、単純なインスタンス変数を作成しLibraryBootてから、initializeメソッドにの新しい属性を追加することです(これは、回答の1つでdemasによって提案されました)。

これは確かに機能しますが(実際、私がずっとやってきたことです)、これは最適ではないため、満足していません。オブジェクトが作成されるたびに、これらの不変の配列を作成する必要があるのはなぜですか。

私が本当に望んでいるのは、親クラスから継承できるクラス変数を用意することですが、子クラスで変更しても、親クラスでは変更されません。

0 投票する
5 に答える
341 参照

javascript - ほとんどのOOP言語では、インスタンスメソッドの「i」は最初にローカルを参照し、次にグローバルを参照しますが、インスタンス変数またはクラス変数を参照することはありませんか?

次のコードでは:

何が警告されていますか? 答えはこの質問の最後にあります。

iアラート呼び出しでは、ローカル変数 (存在する場合) またはグローバル変数のいずれかを参照していることがわかりました。ローカルもグローバルも定義されていない場合でも、インスタンス変数またはクラス変数になる方法はありません。インスタンス変数を参照するにiは が必要this.iで、クラス変数を参照するiには が必要Circle.iです。これは、ほとんどすべてのオブジェクト指向プログラミング言語に実際に当てはまりますか? 例外はありますか?ローカルもグローバルもない場合、インスタンス変数を検索してからクラス変数のスコープを検索する場合はありますか? (または、この場合、それらはスコープと呼ばれますか?)

答えは: 10 が警告されています。

0 投票する
2 に答える
876 参照

ruby-on-rails - Railsですべてのコントローラー変数を一度に検査する方法はありますか?

私は約10個程度のインスタンス変数を持つ大きなコントローラーメソッドを模索しています。それらのいくつかはbefore_filterメソッドで設定され、他のいくつかはメソッド自体の内部で設定されます。私はそれらをプットで検査したいのですが、それらすべてを例として書きたくありません:

@現在のメソッドでこれまでに符号が設定されたすべてのインスタンス変数を表示するジェネリックメソッドはありますか?そうでない場合、putsステートメントにすべてを書き込むことなく、一度にすべてを検査する次善の方法は何ですか?

0 投票する
4 に答える
19439 参照

ruby-on-rails - Rubyで、配列ではなくハッシュでインスタンス変数を取得するにはどうすればよいですか?

Rubyクラスがあります。そのクラスのメソッドへの引数からインスタンス変数を取得したいと思います。すべてのインスタンス変数を配列として取得できます。

argただし、具体的には、という名前のインスタンス変数を取得したいと思います。

どうすれば計算できhash_of_instance_variablesますか?

0 投票する
3 に答える
17230 参照

ruby - 親クラスのインスタンス変数にアクセスする

これはどのように機能しますか?

基本的に、子クラスのルックアップで使用するには親クラスの値が必要ですが、より良い方法がある場合は、明示的に渡したくありません。親のインスタンス変数は、子クラスでは完全にアクセスできませんか?それとも、これは単に貧弱な階層設計ですか?

0 投票する
2 に答える
1757 参照

ruby-on-rails - RJSを使用してinnerHTMLを実際のライブインスタンス変数に置き換える

私は一生、RJSに要素のinnerHTMLをインスタンス変数の属性に置き換えることはできません。@thing.name

私はすべてのコードを示します(実際のプロジェクトから簡略化されていますが、それでも完全です)、そして解決策が誰かに明白な額平手打ちになることを願っています...

RoRでは、ランダムな漢字を表示する簡単なページを作成しました。

これは、Word属性chineseと。を持つオブジェクトですenglish

「これは何ですか?」というタイトルのリンクをクリックします。englishRJSを使用して属性を明らかにします。現在、「これは何ですか?」も非表示になっています。リンクして「別の方法を試してみませんか?」ページをリロードするだけのリンクで、新しいランダムな文字で効果的に最初からやり直します。

これは問題ありませんが、独自のデータベースクエリを作成する他の要素がページにあるため、ページの残りの部分はそのままにして、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最も明白なオプションで-そしてパラメータで何が渡されるかを研究しましたが、役に立ちませんでした。この時点で、自分が何をしているのかわからないことに気づきます。

これが私の最初の質問です。簡潔にするのではなく、必要なすべてのコードを提供する側に誤りがありました。どんな助けでも大歓迎です。