コミュニティに質問があります。 私は今すぐKotlinを学び、関数から複数の値を一度に返すことができるときに、構造化宣言という概念を見つけました。非常に便利だと思われますが、同時にそれは難題です。私がJavaのその機能について考えるとき、私はそれが私のアーキテクチャの穴であることを理解しています。おそらくクラスだけでなく、いくつかの変数があるはずです。皆さんはどう思いますか?Kotlinにおける宣言の構造解除のポイントは何ですか?
答えて
このコンセプトでは、主なプロパティのいくつかを明確に識別するクラスを持つことができます。のコンポーネントは、です。
これらのコンポーネントにアクセスするには、プロパティにアクセスする際の構文上の騒音がないように、構造解除宣言を使用します。
val (x, y) = clickEvent.getPointOnScreen()
基本的には、シンタックスシュガーのこの種を使用する必要はありません、とコンセプト:タイプはcomponent1
とcomponent2
だけを持っていると仮定して、
val point = clickEvent.getPointOnScreen()
val x = point.xCoordinate
val y = point.yCoordinate
// Use `x` and `y` in some calculations
と:
を比較しますそれ自体は抽象化を害するものではなく、インスタンス自体を必要としない場合、クラスインスタンスのプロパティにアクセスする便利な方法を提供するだけの場合もあります。
はfor ((key, value) in myMap) { /* ... */ }
まだ(key, value)
非構造背後Map.Entry<K, V>
あります、そして、あなたはfor (entry in myMap) ...
でそれを置き換えることができますが、通常はそれはあなたが必要とする2つのプロパティをです:
別の例は、例えば、マップエントリと協力しています。これは、非構造化ノイズからあなたを保護します。
あなたのオブジェクトの2つの変数xCoordinateとyCoordinateを交換することによってリファクタリングする場合、慎重に使用してください - > component1とcomponent2が切り替わります - > '' 'val(x、y)' ''は実際には '' val (y、x) '' 'ここにバグがあります。 –
ctrl + f6またはcmd + f6リファクタリングツールを使用すると、これが正しく処理されます。 –
- 1. Kotlin REPLの構造化宣言がペアで機能しない
- 2. 宣言構造体
- 3. 宣言構造の違い
- 4. 関数宣言におけるこのマクロの役割は何ですか?
- 5. 構造体宣言の最後のこの[1]の目的は何ですか?
- 6. typescript - サブオブジェクトの構造を宣言する
- 7. Serilogの構造解除とは何ですか?
- 8. インライン構造体宣言
- 9. 構造体をC言語で宣言せずに宣言する
- 10. Vulkan:vk * CreateInfo構造体のsTypeのポイントは何ですか?
- 11. Go Relflect構造体を宣言する
- 12. 難易度構造を宣言する
- 13. 構造体へのグローバルポインタの宣言
- 14. Cの構造体宣言の配列
- 15. Cの構造体の前方宣言?
- 16. はなぜ構造体を作成した構造体宣言
- 17. 構造体の宣言にtypedefを使用する理由は?
- 18. Javaで定数階層データ構造を宣言するには?
- 19. JavaのLinkedListデータ構造におけるトラバース、挿入、削除
- 20. Kotlinで生の型を宣言するには? Javaでは
- 21. ヘッダーで宣言するHoは構造体のオーバーロード演算子ですか?
- 22. C言語のtypedef構造体の意味は何ですか?
- 23. 列挙宣言のポイント
- 24. ポイント構造の値を削除する方法は?
- 25. Pythonで複雑なデータ構造の型を宣言する
- 26. 一部のメンバーだけが別の構造体の値を使用できる構造体を宣言するにはどうすればいいですか?
- 27. EXTJSディレクトリ構造:削除できるものは何ですか?
- 28. 変わった構造体宣言
- 29. Cython再帰構造体宣言
- 30. マルチテナントアプリケーションの構築におけるベストプラクティスは何ですか?
関数から2つのものを返すのは、コーナーユースケースの1つのみです。機能自体はより多くの状況で使用されており、有用で維持可能であることが証明されています。 – voddan
"そこにはクラスがあるはずです" - あなたが持っているものがすべてハンマーであるなら、すべてがc-l-a-s-s-e-s- nailsのように見えます。別の言語 - 異なるイディオム。また、@ voddanが言ったこと。 –
破壊宣言にはKotlinのクラスが必要です。私はそれの主な目的は、複数の戻り値の代わりに単純さを提供することだと思います。ほとんどのユースケースは、[official doc](https://kotlinlang.org/docs/reference/multi-declarations.html)で実演されています。 – BakaWaii