1. ホーム
  2. kotlin

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つの違いがあります。

  1. apply はインスタンスをレシーバとして受け取るのに対し with は引数としてインスタンスを渡す必要があります。どちらの場合も、インスタンスは this になります。

  2. apply はレシーバを返し with はそのブロック内の最後の式の結果を返す。

どの関数を選ぶかについては、厳密なルールがあるわけではありませんね。通常は apply を使います。そして、あるオブジェクトに対して何らかの処理を行い、別のオブジェクトを返す必要があるときは、次のどちらかを使うことができます。 with または run . 私は run の方が読みやすいと思いますが、好みの問題でしょう。