LoginSignup
16
8

クロージャに引数名を明記する方法とメリット(Swift)

Last updated at Posted at 2023-05-20

はじめに

クロージャに引数ラベルを付けることはできませんが、実は引数ラベルを省略して引数名のみを付けることはできます。

// ✅
let onSaveButtonClicked: (String) -> Void
let onSaveButtonClicked: (_ movieTitle: String) -> Void

// ❌
let onSaveButtonClicked: (movieTitle: String) -> Void // ビルドエラー

環境

  • OS:macOS Ventura 13.3.1 (a)
  • Xcode:14.3 (14E222b)
  • Swift:5.8

クロージャに引数名を明記するメリット

クロージャに引数名を明記するメリットを紹介します。

何が渡ってくるか明確にできる

クロージャ名や型名から推測できることもありますが、先ほどの例( onSaveButtonClicked: (String) -> Void )のように何が渡ってくるか推測しづらいこともあります。

onSaveButtonClicked: (_ movieTitle: String) -> Void のように引数名を付けることで、何が渡ってくるか明確にできます。

Xcodeで補完が効く

構造体の生成時にEnterキーを押すと、自動的に引数名が補完されます。

struct Foo {
    let onSaveButtonClicked: (_ movieTitle: String) -> Void
}

スクリーンショット 2023-05-20 13.58.19.png
↓ Enterキーを押す
スクリーンショット 2023-05-20 13.57.06.png

Twitterで教えていただきました。

余談ですが、Swift Playgroundsでは補完されませんでした。

おわりに

記述量が増えるくらいしかデメリットはなく、メリットが多いので積極的に引数名を明記しようと思いました。

逆に言えば記述量が増えるデメリットがあるので、クロージャ名や型名から推測できる場合は今まで通り省略するのもありかもしれません。

私は基本的にはすべてのクロージャに明記するつもりです。

参考リンク

16
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
8