👏
out引数を持つメソッドの呼び出し
.NETにはout
引数を持つメソッドがあります。例えば
これらはC#言語ではout
パラメーター修飾子という機能があり、
var result = Int32.TryParse("123", out var value); // valueはint型で値は123になる
と呼び出し時に変数宣言できるためメソッド呼び出しが負担になりません。
一方、我らがF#言語ですが、呼び出し時に変数宣言する機能はありません。そのため、
let mutable value = 0
let result = Int32.TryParse("123", &value)
と2行に分けて記述する必要があり不便です。加えて、事前に変数宣言するため、その型を明確にする必要も出てきます。
実はF#言語にはあまり明記されていませんが、out
引数をうまく処理してくれる機能があります。
Int32.TryPrase(s : string, result : byref<int>) : bool
というメソッドが存在した場合、言語機能として
Int32.TryParse(s : string) : bool * int
というオーバーロードを内部的に用意してくれます。このため、
let result, value = Int32.TryParse("123")
と呼び出すことができます。
Discussion