return文とは
return文は、
プログラミング言語において、
サブルーチン(関数やメソッド)の実行を終了し、呼び出し元に制御を戻すための文です。多くの場合、値を返却する機能も持ち合わせています。この返却される値は、戻り値、返り値、返却値などと呼ばれます。
return文の分類
return文は、`goto文`、`break文`、`continue文`などと同様に、ジャンプ文の一種に分類されます。プログラムの実行フローを特定の箇所に移動させる役割を持ちます。
各言語におけるreturn文
return文は多くの
プログラミング言語に共通して存在しますが、その構文や動作は言語によって異なります。
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における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(
Visual 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文の正しい理解は非常に重要です。