New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
column @discardableResult を追加 #27
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
この Column を加えるのはとてもよいですね!ありがとうございます。
内容もほとんどよさそうに思いましたが、もう少し改良できそうな気がしました。よろしければご検討いただいてもよいでしょうか。
@@ -614,6 +610,13 @@ let fifteen = multiply(3, by: 5) | |||
|
|||
関数は、関数名やラベル、引数の型、返り値の型などを合わせてシグネチャを形成する。シグネチャが異なる関数は別な関数となる。このことを利用して、関数名は同じだが引数や返り値の型は異なる関数を定義することができ、これをオーバーロードと呼ぶ。オーバーロードされた関数は、引数や返り値の型から呼び出される関数が決まる。 | |||
|
|||
> #### column `@discardableResult` | |||
> | |||
> 返り値のある関数の返り値を使用しない場合、警告が表示される。関数の返り値を使用しないことを許容する場合、関数に `@discardableResult` 属性をつけることができる。 実用的な事例としては、`remove` 関数の返り値として、成功したか失敗したかを表す `Bool` や、削除した Element を返したいが、呼び出し元ではそれを無視したいときがある場合などがある。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
返り値を使用していないとデフォルトで警告が出るのは、例えば値型の破壊的ではないメソッドが新しい値を返すような場合に新しい値を使用しないことが明らかにバグであることから、返した値を使用しないことは基本的には問題がある、という意味合いだと思います。
というような前提の説明を加えることで、Swift を学ぶ人が、より誤解なく @discardableResult
を使用すべき場面がわかるのではないかと思いました。
加えて _ =
で返り値を無視することもできるということを書いておくとよいと思います。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
レビューありがとうございます!どのような書き方が良いか考えていたのですが、間が空いてしまいすみません。
たしかにどういう意味合いがありそうか前置きがあったほうが、初学者に誤解が少なくて良さそうですね。ほとんどご指摘の文章を加えただけという感じではありますが以下はどうでしょうか。
column
@discardableResult
返り値のある関数の返り値を使用しない場合、警告が表示される。これは例えば、値型の破壊的ではない関数が新しい値を返すような場合に、新しい値を使用しないことが明らかにバグであることから、返した値を使用しないことは基本的には問題があると考えられるからである。
関数の返り値を使用しないことを許容したい場合は、関数に@discardableResult
属性をつけることができる。
@discardableResult
属性でない関数の返り値は、_ =
で明示的に無視することもできる。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
よさそうです 💯
695686d
to
b9f6ed0
Compare
b9f6ed0
to
5356153
Compare
また間があいてしまい申し訳ありません、 |
お疲れさまです!ありがとうございました 🥇 |
Swift3で、
@discardableResult
をつけていない関数の返り値を使用しない場合、警告が表示されるようになったので、コラムとして追加してみました。また、同節の改行の位置が気になったので変更しました。もしよろしければご検討ください。表現や説明の仕方が気になる場合は気兼ねなくご修正ください。よろしくお願いします。