質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

2回答

643閲覧

returnを使う理由【Swift】

kazuki_user

総合スコア147

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

1クリップ

投稿2020/08/08 12:52

swift

1func createFullName(firstname: String, lastName: String) { 2// return firstname + " " + lastName 3 print(firstname + " " + lastName) 4} 5 6createFullName(firstname: "Suzuki", lastName: "Nobu") 7//let fullName = createFullName(firstname: "Suzuki", lastName: "Nobu") 8//print(fullName)

## returnを使う理由。

上記コードでは、returnが無くても同じ結果になります。

上記のようなシンプルなコードだと、returnを使わない方が早いのかも知れませんが、returnが必要になるのは、どんな時なのでしょうか?

お時間あるときに、ご返信頂けましたら幸いです????

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

どちらでも機能的には問題はありませんし、printを誰が(どのメソッドで)行うかというのは、設計の問題なので、どちらでも自由です。しかし…

一般的に、メソッドにはそれぞれ役割をまず定めます。
そして、その役割にふさわしい名前を付けます。

createFullNameというメソッド名からは、フルネーム(の文字列)を生成するメソッドであることが伺えます。
しかし、

Swift

1func createFullName(firstname: String, lastName: String) { 2 print(firstname + " " + lastName) 3}

このコードの内容は、名前を生成するにはしますが、それを表示するのが機能となります。
この内容であれば、createFullNameではなく、printFullNameと付けるのが妥当だと思います。

Swift

1func createFullName(firstname: String, lastName: String) -> String { 2 return firstname + " " + lastName 3}

であれば、フルネームを生成してそれを返すだけの機能なので、まさにcreateFullNameという
メソッド名にふさわしい形かと思われます。
生成されたフルネームをどうするかは、生成を依頼した側が決めることで、生成の担当者が勝手に処理することでは無いのです。

上司「この文章、清書しておいて」
担当「了解です。清書した上に相手に送信しておきました!」
上司「え!?」
みたいな感じです。

これはあくまで、そうする方が良いという話であって、言語ルール的には別に変数名やメソッド名とその内容がまるで一致していなくとも、問題はありません。
しかし、そういうコードはとても混乱を招きますので、可能な限り避けた方が良いです。
名は体を表すべきなのです。

投稿2020/08/08 17:09

編集2020/08/08 17:10
amiya

総合スコア1216

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kazuki_user

2020/08/09 04:02

ご返信ありがとうございます。 とても丁寧なご説明ありがとうございました???? - どちらでも機能的には問題ない (このコードの場合) - 生成されたものをどうするかは、生成を依頼した側が決めること。設計の問題。 - 名は体を表すべき
guest

0

関数・メソッドの機能をどう設計するかは自由なので、特定の処理する場合に呼び出す側と呼び出された側での処理の分担をどうするかは、一番良いように設計します。
出力する際の要件が変更になって修正する事を考えると、printを分散するのが良いというのは希でしょう。

また、汎用的な処理をする関数・メソッドの場合は、汎用に使えるように設計します。
例えば、文字列の長さを返すlengthメソッドが長さをreturnせずにprintする機能だったりすると使い物になりません。

投稿2020/08/08 13:55

otn

総合スコア84421

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kazuki_user

2020/08/09 04:06

> 文字列の長さを返すlengthメソッドが長さをreturnせずにprintする機能だったりすると使い物になりません。 なるほどです。returnには必然性がしっかりとあるのですね。 とても参考になりました????
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問