私はF# で非常に新しい (まだ非常に興奮している)です。
を返すプロパティの同等の F# コードは何IEnumerable<object[]>
ですか?
public static IEnumerable<object[]> EnumerateFooBar
{
get
{
yield return new object[]
{
"foo",
"bar"
};
}
}
私はF# で非常に新しい (まだ非常に興奮している)です。
を返すプロパティの同等の F# コードは何IEnumerable<object[]>
ですか?
public static IEnumerable<object[]> EnumerateFooBar
{
get
{
yield return new object[]
{
"foo",
"bar"
};
}
}
F# の C# iterator メソッドに相当するのはseq { .. }
ブロックです。これは式なので、メソッドを定義するために使用できます (インライン シーケンスも使用できます)。ブロック内で( C#yield
に対応) を使用したり、特定のシーケンスのすべての要素を返すために を使用したりできます。yield return
yield!
配列を作成する式object[]
はオブジェクト リテラルに変換できます[| ... |]
が、値がオブジェクトとして返されることを確認する必要があります。これは、型注釈を追加するか、box
関数を使用して明示的なボックス化を追加することで実行できます。
C# コードは読み取り専用プロパティのように見えますが、次を使用して単なる値宣言として変換できますlet
。
let EnumerateFooBar = seq { yield [| box "foo"; box "bar" |] }
型注釈を使用した代替方法:
let EnumerateFooBar : seq<obj[]> = seq { yield [| "foo"; "bar" |] }
これを何らかのオブジェクトのプロパティとして定義したい場合:
type FooBarEnumerator() =
member this.EnumerateFooBar : seq<obj[]> = seq { yield [| "foo"; "bar" |] }