2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

引数がクロージャーの場合のヘッダドキュメント

Last updated at Posted at 2018-02-14

クロージャの引数のコードヒントが表示されない。

次のような、引数のクロージャを実行するだけの特に意味のないファンクションの場合…

無意味な関数
func doSomething(index: Int, handler: (Int) -> Void) {
    handler(index)
}

⌥⌘ + / でコメントテンプレートを挿入して、次のように記述した場合に、

コメント例
/// クロージャを実行
///
/// - Parameters:
///   - index: 何らかの値
///   - handler: 実行するクロージャ

doSomething を ⌥+クリック すると次のようなコードヒントが表示されてしまう。

スクリーンショット 2018-02-14 12.32.37.png

気になるのは | - | No description. | の部分。いろいろ調べた結果、不本意ながら、次のように記載することでクロージャの引数にもコメントが表示されるようになった。

修正後
/// クロージャを実行
///
/// - Parameters:
///   - index: 何らかの値
///   - handler: 実行するクロージャ
///   - i: クロージャが要求する何らかの値
func doSomething(index: Int, handler: (_ i: Int) -> Void) {
    handler(index)
}

スクリーンショット 2018-02-14 12.35.17.png

ポイントは**「クロージャの引数の記述に名前をつけたこと」「その名前にコメントを追加したこと」**の2点。

注意点

doSomething の引数である index と同じ名前の引数をクロージャの引数(上の例では i)につけて、コメントに -index: が二回出現させると後に書かれた方が優先されて、コードヒントでは両方に同じコメント(上の例では「クロージャが要求する何らかの値」)が表示されてしまいます。

悪い例
/// クロージャを実行
///
/// - Parameters:
///   - index: 何らかの値
///   - handler: 実行するクロージャ
///   - index: クロージャが要求する何らかの値
func doSomething(index: Int, handler: (_ index: Int) -> Void) {
    handler(index)
}

スクリーンショット 2018-02-14 12.53.20.png

未解決問題

クロージャが戻り値を持つ場合の記述方法が解らない。

不満/不本意なところ

  • ⌥⌘ + / で挿入されるテンプレートでクロージャの引数が考慮されていないこと(変更後の書き方でもテンプレートは同じだった)。
  • 引数であるクロージャの引数には名前がつけられないのに「_ + 引数名」の形式で名前をつけていること。
2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?