です:F#:古典的なスワップ関数を書くには? C#では、古典的なスワップ機能は
void swap (ref int a, ref int b){
int temp = a;
a = b;
b = temp;
}
int a = 5;
int b = 10;
swap(ref a, ref b);
私はF#のであることを書くだろうか?
(注、私は機能的同等物を望んでいない私は実際に参照セマンティクスで渡す必要があります。。)
です:F#:古典的なスワップ関数を書くには? C#では、古典的なスワップ機能は
void swap (ref int a, ref int b){
int temp = a;
a = b;
b = temp;
}
int a = 5;
int b = 10;
swap(ref a, ref b);
私はF#のであることを書くだろうか?
(注、私は機能的同等物を望んでいない私は実際に参照セマンティクスで渡す必要があります。。)
をジャレッドのコードに次の
let swap (left : 'a byref) (right : 'a byref) =
let temp = left
left <- right
right <- temp
例を試してみてください:
let mutable (a, b) = (1, 2)
let swap (left : 'a byref) (right : 'a byref) =
let temp = left
left <- right
right <- temp
printfn "a: %i - b: %i" a b
swap (&a) (&b)
printfn "a: %i - b: %i" a b
通常、変更可能なletの代わりにref-cells
を使用します。
それは本当ですか?可能であれば、ミューテックスを好むべきだと私は思った。 –
///あなたが機能バージョンをしたくない場合は、なぜF#の使用を
let Swap (a, b) = (b, a)
この質問はタプルの入れ替えについてではなく、 'let temp = a; a <-b; b <-temp' –
タプルに2つの値の順序を入れ替える機能? – crashmstr
それは本当に問題なのですか?質問は質問です...答えはまだまだあります。 – jrista
F#は島ではありません。この場合は、出力パラメータに大きく依存するSQLストアドプロシージャのラッパーに取り組んでいます。私はこれを関数型APIとSQL型APIの間に置く必要があります。 –