我是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# 迭代器方法等效的是seq { .. }
块。这是一个表达式,因此您可以使用它来定义方法(也可以用于内联序列)。在块内部,您可以使用yield
(对应yield return
于 C# 中的),也可以使用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" |] }