Return文

return文とは



return文は、プログラミング言語において、サブルーチン(関数やメソッド)の実行を終了し、呼び出し元に制御を戻すための文です。多くの場合、値を返却する機能も持ち合わせています。この返却される値は、戻り値、返り値、返却値などと呼ばれます。

return文の分類



return文は、`goto文`、`break文`、`continue文`などと同様に、ジャンプ文の一種に分類されます。プログラムの実行フローを特定の箇所に移動させる役割を持ちます。

各言語におけるreturn文



return文は多くのプログラミング言語に共通して存在しますが、その構文や動作は言語によって異なります。

C/C++



CおよびC++では、return文は、関数が値を返すとともに、関数の実行を終了させる役割を持ちます。return文で返される値の型は、関数定義時に指定する必要があります。

c++
int f() {
return 10; // int型の値を返す
}

void g() {
return; // 値を返さない
}


`void`型を指定した関数は、値を返しません。Cでは、値を返す関数内で式を伴わないreturn文は、エラーとなります。また、値を返さない関数内で式を伴うreturn文はエラーとなります。

C++では、関数の終わりに到達した場合、値なしのreturn文があるものとして扱われます。値を返す関数で終わりに到達した場合は未定義動作となります。そのためコンパイラは警告を発します。

戻り値の型が異なる場合は、暗黙的な型変換が行われます。C++では、return文が一時オブジェクトの構築とコピーを伴うこともあります。

C++11からは、`noreturn`属性を用いて、return文を実行しない関数を定義できるようになりました。これにより、コンパイラの警告を回避できます。

Java



Javaにおけるreturn文は、メソッドの実行を終了し、呼び出し元に制御を戻す役割を持ちます。値を返す場合は、メソッドの戻り値の型に合わせて値を返す必要があります。値を返さない場合は、`void`を指定します。

java
int add(int a, int b) {
return a + b; // int型の値を返す
}

void printMessage(String message) {
System.out.println(message);
return; // 値を返さない
}


メソッドの末尾に到達した場合、暗黙的にreturnされます。`void`メソッドでは、値を返すreturn文を書くことはできません。

BASIC



BASICVisual Basic 6まで)では、return文は、`gosub`で呼び出されたサブルーチンからメインルーチンに戻るための命令です。`gosub`で記憶された行番号に処理を戻します。BASICには、行番号付きのreturn文と行番号なしのreturn文が存在します。

basic
10 GOSUB 100
20 PRINT "Main Routine"
30 END
100 PRINT "Subroutine"
110 RETURN


行番号付きのreturn文は、特定の行番号にジャンプする機能を持っています。この場合、return文以降の処理は実行されません。

関数型言語



関数型言語では、return文は手続き型言語のように明示的に記述する必要はありません。関数内で最後に評価された式が戻り値となります。`if-else`などの制御構造も式として値を返します。ただし、Haskellの`return`関数や、F#のコンピュテーション式における`return`キーワードのように、別の目的で`return`という概念が使われることもあります。

その他の言語におけるreturn文



Rustでは、return式(末尾にセミコロン;を伴うことでreturn文となる)をサポートするものの、省略して関数型言語のように書くこともできます。Swift 5.1以降は、単一の式からなる関数においてreturnを省略した書き方をサポートします。Pascalでは、goto文がreturn文の代替として使用されます。COBOLでは、RETURN文はSORT文に関連して、レコードを返す役割を持ちます。

ラムダ式とreturn文



多くの手続き型言語では、式形式のラムダ式が許可され、値を返す場合はreturn文が不要です。ただし、C++ではラムダ式で値を返す場合はreturn文の記述が必要です。

csharp
// C#の例
// 式形式のラムダ式
Func square = x => x x;

// 文形式のラムダ式
Func square = x => { return x
x; };


ラムダ式の戻り値の型は、return文がある場合は、return文の式から推論されます。

まとめ



return文は、プログラミング言語における重要な制御文であり、関数やメソッドの実行を終了し、呼び出し元に制御を戻す役割を担います。多くの言語で共通して存在しますが、構文や動作は言語によって異なります。プログラミングを行う上で、return文の正しい理解は非常に重要です。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。