問題タブ [property-observer]

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 に答える
10527 参照

swift - Swiftでは、didSet内のプロパティをリセットすると、別のdidSetがトリガーされますか?

これをテストしていますが、 内で値を変更すると、didSet別の呼び出しが行われないようdidSetです。

これに頼ってもいいですか?それはどこかに文書化されていますか?Swift プログラミング言語のドキュメントには表示されません。

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

swift - プロパティをSwiftで計算されたプロパティにするもの

コード スニペットから始めましょう。

保存および計算されたプロパティに関する私の個人的な理解の一部を次に示します。

a: オブザーバーのみを持つプロパティ (willSet および didSet) は、計算されたプロパティではなく、格納されたプロパティです (例: 上記のコードのproAプロパティ)。

b: 計算されたプロパティには初期化があってはなりません (上記のコードのコメントを参照してください)。

c: セッターはプロパティ オブザーバーと同じようなものです。プロパティ オブザーバーは、変更前と変更後のセッター + オブザーバーです。

質問:

1.プロパティを計算プロパティにする理由は何ですか? プロパティにゲッターがあり、計算されたプロパティであるというのは正しいですか?

2.私の理解 (a、b、c) はすべて正しいですか? そうでない場合は、ご指摘いただければ幸いです。

3.計算されたプロパティを初期化できないのはなぜですか? (下の図を参照してください) そして、そうすると、コンパイラは警告を出します Cannot call value of none-function type "int"このエラーの意味は何ですか?

ここに画像の説明を入力

どうもありがとう。

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

arrays - プロパティ オブザーバーを使用して Swift コレクション型の特定の要素を監視するにはどうすればよいですか?

配列内の要素の値が変更されたかどうかを知る方法は? 、答えは、配列が変更されたかどうかを確認するためにプロパティ オブザーバーを使用することでした。

ただし、プロパティ オブザーバーのコレクション型で更新された要素を特定するにはどうすればよいですか? 例えば:

追加、更新、または削除操作ごとにコードが呼び出されていることに注意してください。ただしdidSet、影響を受ける要素を正確に知るにはどうすればよいでしょうか。strings配列をProperty Observerとして宣言することでこれを達成する方法さえありますか?

Swift のすべてのコレクション タイプについて質問しています。これは、すべてのコレクション タイプで同じ動作であると想定しているためです。これは観察に関するものです。

ありがとう。

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

swift - 内部の didSet 保護は、奇妙にクラス全体に拡張されていますか?

もちろん、didSet が didSet 内から同じオブジェクトに対して再度実行されることはないことはよく知られています。(。)

でも。どうやら:制限はそのオブジェクトだけでなく、同じクラスのオブジェクトにも適用される可能性があります。

Playground のコピー アンド ペースト テスト ケースを次に示します。

動作しません!

動作しません!

  1. これは Swift のバグですか?

  2. そうでない場合、実際の制限は何ですか? didSet? から始まる didSet は実行されません。同じ同一クラス?; 同じスーパークラス?; また?

  3. これはドコのどこに具体的に説明されていますか?

なんてこった。知る必要があります...具体的には実際の制限は何ですか?