2

私はF#が初めてです。

変数が整数型か別の型かを確認するにはどうすればよいですか。

ありがとう。

4

2 に答える 2

5

1 つの方法は、コメントで @ildjarn によってリストされています。

let isInt x = box x :? int

慣用的な方法は、パターン マッチングを使用することです。まず、可能なオプションを定義する識別共用体を定義します。

type Test =
| IsAnInteger of int
| IsADouble of double
| NotANumber of Object

次に、match ステートメントを使用して、取得したオプションを決定します。最初に match ステートメントで使用する値を作成するときは、判別共用体型に入れる必要があることに注意してください。

let GetValue x =
    match x with
    | IsAnInteger(a) -> a
    | IsADouble(b) -> (int)b
    | NotAnInteger(_) -> 0

テストを使用して制御フローを決定する可能性があるため、慣用的に行うこともできます。これにより、可能性のあるすべてのケースを処理しないと、match ステートメントによって警告が表示されるため、ケースを見逃すのを防ぐこともできます。

>GetValue (NotAnInteger("test"));;
val it : int = 0

>GetValue (IsADouble(3.3))
val it : int = 3

>GetValue (IsAnInteger(5))
val it : int = 5
于 2013-03-13T02:54:38.237 に答える
0

この質問に「c#-to-f#」というタグを付けたことを考えると、C#のバックグラウンドからF#に来ていると思います。したがって、おそらく変数を明示的に入力することに慣れているので、型推論に少し混乱するかもしれません。

必要に応じて、のタイプを明示的に宣言できます。

let x:int = 3

しかし、通常、型推論にこの作業を任せる方が簡単で優れています。私が値を言ったことに気付くでしょう-あなたはそれに破壊的な割り当てをすることができないので、上記の宣言は変数ではありません。変数が必要な場合は、次のようにします。

let mutable x:int = 3

次に、この構成を介してxに新しい値を割り当てることができます

x <- 5

ただし、原則として、可変値は避けたいと思うでしょう。

于 2013-03-14T17:43:32.593 に答える