Kotlin 適用 vs 使用
2023-08-23 08:50:29
質問
withとapplyの違いは何ですか?私が知っている限りでは、次のコードは同じことを行います。
swingElement.apply {
minWidth = ENABLED_COLUMN_WIDTH
maxWidth = ENABLED_COLUMN_WIDTH
preferredWidth = ENABLED_COLUMN_WIDTH
}
with(swingElement) {
minWidth = ENABLED_COLUMN_WIDTH
maxWidth = ENABLED_COLUMN_WIDTH
preferredWidth = ENABLED_COLUMN_WIDTH
}
何か違いがあるのでしょうか、また、どちらかを使うべきなのでしょうか? また、一方がうまくいって他方がうまくいかないケースもあるのでしょうか?
どのように解決するのですか?
2つの違いがあります。
-
apply
はインスタンスをレシーバとして受け取るのに対しwith
は引数としてインスタンスを渡す必要があります。どちらの場合も、インスタンスはthis
になります。 -
apply
はレシーバを返しwith
はそのブロック内の最後の式の結果を返す。
どの関数を選ぶかについては、厳密なルールがあるわけではありませんね。通常は
apply
を使います。そして、あるオブジェクトに対して何らかの処理を行い、別のオブジェクトを返す必要があるときは、次のどちらかを使うことができます。
with
または
run
. 私は
run
の方が読みやすいと思いますが、好みの問題でしょう。
関連
-
[解決済み] Kotlin 三項条件演算子
-
[解決済み] Kotlinのvarとvalの違いは何ですか?
-
[解決済み】KotlinでJavaの静的メソッドに相当するものは何ですか?
-
[解決済み】デフォルトのインターフェースメソッドはAndroid 7.0(Nougat)からしかサポートされません。)
-
[解決済み】KotlinのList型とArray型の違いについて
-
[解決済み】JavaからKotlinの拡張関数にアクセスする
-
[解決済み] Kotlinのトライウィズリソース
-
[解決済み】Kotlinの標準ライブラリで利用できるJava 8 Stream.collectに相当するものは?
-
[解決済み] KotlinのIntArrayとArray<Int>の比較
-
[解決済み] kotlin.jvm.KotlinReflectionNotSupportedError.KotlinReflectionNotSupportedError.KotlinReflectionNotSupportedError: ランタイムにKotlin Reflectionの実装が見つかりませんでした。kotlin-reflect.jar があることを確認してください。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Kotlinにコンストラクタ参照はありますか?
-
[解決済み] Safeargsライブラリがディレクションクラスを生成しない
-
[解決済み] Kotlin データクラスのオーバーライドゲッター
-
[解決済み] Kotlinのゲッターとセッター
-
[解決済み] Kotlinで抽象クラスのインスタンスを生成する
-
[解決済み] kotlin.jvm.KotlinReflectionNotSupportedError.KotlinReflectionNotSupportedError.KotlinReflectionNotSupportedError: ランタイムにKotlin Reflectionの実装が見つかりませんでした。kotlin-reflect.jar があることを確認してください。
-
[解決済み] KotlinのコルーチンはRxKotlinよりどう優れているか?
-
[解決済み] Kotlinにおけるスレッドとコルーチンの違い
-
[解決済み] 実験的な "Kotlinコルーチン "は実運用に使えるか?
-
Kotlinのcrossinlineとnoinlineの違いは何ですか?