関数はアクションを実行できます。関数で行うことができる処理の 1 つとして、呼び出されたときに値を返すことがあります。この値が 結果 です。
たとえば、GetRandomInt(1, 10)
を呼び出すと、1 ~ 10 の間のランダムな整数を取得できることが想定されます。
関数が返す 値の型 を変更するには、関数シグネチャ で型を変更します。次に例を示します。
GetNumberOfMousetrapsYouCanAfford() : int
この例では、GetNumberOfMousetrapsYouCanAfford()
の戻り値の型は int
であるため、コード内で GetNumberOfMousetrapsYouCanAfford()
を呼び出すと整数が返されることを想定できます。
GetNumberOfMousetrapsYouCanAfford() : float
一方、その型を float
に変更すると、異なる種類の値が返されます。
関数の戻り値の型が指定されている場合は、その関数の 本体 (コード ブロック) で、その型に一致する結果を生成する必要があります。型が一致していない場合、そのコードはコンパイルされず、コンパイラ エラーが発生することになります。以降では、これを回避する方法について学びます。
結果と戻り値
結果 とは、関数が 実行された (動作した) ときにその関数が 返す 値のことです。
「レッスン 2 で説明したように、キーワード は Verse に組み込まれている特殊な単語であり、非常に具体的なアクションが与えられています。
Verse では、return も、return キーワードの後に続く式から生成される値を結果として与えるように関数に指示する キーワード です。
MyFunction() : int =
return 5
OnBegin<override>()<suspend> : void =
MyFunction() # result is 5
上記のコード例では、MyFunction()
が呼び出されたときに 5
という値が 返されます。
return
を省略してもこの関数は機能しますが、return
を明示的に含めることをお勧めします。この詳細については「関数」を参照してください。
早期の return
プログラムで return
式が実行されると、その関数のコード ブロックはプログラムによって直ちに 終了 されます。つまり、return
式の後に続くコードは実行されません。これは、特定の条件が満たされた時点で関数を早期に終了する場合に便利です。
次の関数は、CoinsPerMouseTrap
に基づいて Coins
変数を更新します。ただし、ネズミ捕り器を購入するには Coins
変数が正の値に設定されている必要があります。Coins
が負の場合、関数はエラー メッセージを出力し、戻り値を返します。関数ボディ内の残りのコードを実行する理由がないためです。
実際のところ、return を使用しないと、この関数では Coins
の値が誤って減らされて、Coins
が負の値であったことが示されなくなります。
var Coins : int = -10
CoinsPerMousetrap : int = 100
BuyMousetrap() : void =
if (Coins < 0):
Print("Error: Coins set to negative value")
return
set Coins = Coins - CoinsPerMousetrap
Print(“Mousetrap bought!You have {Coins} coins left.”)

return
を使用して関数を早期に終了することでバグが発生する可能性があるため、注意して使用することが重要です。たとえば次のコードでは、return
が Print("Mousetrap bought!You have {Coins} coins left.")
の前に実行されるため、この関数が Coins
の新しい値を出力することはありません。
var Coins : int = 500
CoinsPerMousetrap : int = 100
BuyMousetrap() : void =
if (Coins < 0):
Print("Error: Coins set to negative value")
return
set Coins = Coins - CoinsPerMousetrap
return
Print(“Mousetrap bought!You have {Coins} coins left.”)
コード内に早期の return
があってもコンパイルされますが、Visual Studio Code では、return
の後に続く式が実行されないことを示す警告が出力されます。
有用な結果がない関数の void
結果が必要な場合もあれば、必要ない場合もあります。
レッスン 2 ではさまざまな型について学びましたが、それぞれの型には特定の種類の値が必要であることも覚えているでしょうか。以下は、その非常に簡単なリストです。Verse では多数の型が使用されますが、これらは最もよく使われる型であり、変数や定数を使用する上での基礎です。
型 | 動作 | 値 |
---|---|---|
logic |
この型の値は true と false のいずれかのみです。 | true / false |
int |
これは整数値 (小数ではない) であり、int は「integer」を省略したものです。 |
整数値 |
float |
この型は、小数など、整数ではない値に使用されます。 | 小数点付きの数値 |
string |
この型はあらゆる種類のテキストに使用されます。これには文字、数字、句読点、スペースを含めることができ、さらには絵文字 (😻 など) を含めることもできます。 | 文字、数字、句読点、スペース、絵文字 |
結果を生成する必要のない関数を作成する場合は、その関数の戻り値の型を void
に設定することができます。
つまり、関数の型を void に設定することで、コード ブロックの最後の式で、コンパイラ エラーを生じることなくあらゆる型の結果を生成することができます。
void 型の関数で return
キーワードを使用することは可能ですが、return
キーワードで値を指定する必要はありません。
サマリ
- 結果 とは、関数を呼び出したときに返されるものです。
- コード ブロック内では、最後の式によって 結果 が生成されます。
- 関数が返す 値 の型を変更するには、関数シグネチャ で 型 を変更します。
- return は、その後に続く式から生成される値を返すように関数に指示するキーワードです。
- 早期の return は、コード ブロックが終わる前に return キーワードが使用されている場合に発生します。これにより、プログラムによってコード ブロックが直ちに 終了 し、そのコード ブロック内の残りのコードは実行されません。
- void は、関数の値が他のどこでも使用されないことを表す型です。あるいは、単に処理を実行する価値がないことを示します。void は、結果を生成する必要がない関数の型として使用できます。