Skip to content
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

Merged
merged 1 commit into from Jan 6, 2017

Conversation

kumamotone
Copy link
Contributor

Swift3で、 @discardableResult をつけていない関数の返り値を使用しない場合、警告が表示されるようになったので、コラムとして追加してみました。また、同節の改行の位置が気になったので変更しました。

もしよろしければご検討ください。表現や説明の仕方が気になる場合は気兼ねなくご修正ください。よろしくお願いします。

Copy link
Member

@cockscomb cockscomb left a 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 を返したいが、呼び出し元ではそれを無視したいときがある場合などがある。
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

返り値を使用していないとデフォルトで警告が出るのは、例えば値型の破壊的ではないメソッドが新しい値を返すような場合に新しい値を使用しないことが明らかにバグであることから、返した値を使用しないことは基本的には問題がある、という意味合いだと思います。

というような前提の説明を加えることで、Swift を学ぶ人が、より誤解なく @discardableResult を使用すべき場面がわかるのではないかと思いました。

加えて _ = で返り値を無視することもできるということを書いておくとよいと思います。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

レビューありがとうございます!どのような書き方が良いか考えていたのですが、間が空いてしまいすみません。

たしかにどういう意味合いがありそうか前置きがあったほうが、初学者に誤解が少なくて良さそうですね。ほとんどご指摘の文章を加えただけという感じではありますが以下はどうでしょうか。

column @discardableResult

返り値のある関数の返り値を使用しない場合、警告が表示される。これは例えば、値型の破壊的ではない関数が新しい値を返すような場合に、新しい値を使用しないことが明らかにバグであることから、返した値を使用しないことは基本的には問題があると考えられるからである。
関数の返り値を使用しないことを許容したい場合は、関数に @discardableResult 属性をつけることができる。
@discardableResult 属性でない関数の返り値は、 _ = で明示的に無視することもできる。

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

よさそうです 💯

@kumamotone
Copy link
Contributor Author

また間があいてしまい申し訳ありません、
ご指摘の通り修正させていただきました m(_ _)m

@cockscomb
Copy link
Member

お疲れさまです!ありがとうございました 🥇

@cockscomb cockscomb merged commit 2610ecb into hatena:master Jan 6, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants