需要帮助将 C# 转换为 F#
Need help converting C# to F#
我想知道如何将此代码逐行从 C# 转换为 F#。我不想使用任何类型的 F# 习惯用法或类似的东西。我正在尝试了解如何在 F# 中进行枚举和反射。
using System.Linq;
namespace System.Collections.Generic
{
public static class EnumerableExtensions
{
private static readonly Random random;
static EnumerableExtensions()
{
random = new Random();
}
public static T Random<T>(this IEnumerable<T> input)
{
return input.ElementAt(random.Next(input.Count()));
}
}
}
您可以将扩展定义为类型中的静态方法,但必须使用 Extension
属性标记它们。直接重写您的 C# 代码将是:
open System.Runtime.CompilerServices
[<Extension>]
type EnumerableExtensions() =
static let rnd = System.Random()
[<Extension>]
static member Random(input:seq<_>) =
input |> Seq.item (rnd.Next(Seq.length input))
[1;2;3].Random()
我想知道如何将此代码逐行从 C# 转换为 F#。我不想使用任何类型的 F# 习惯用法或类似的东西。我正在尝试了解如何在 F# 中进行枚举和反射。
using System.Linq;
namespace System.Collections.Generic
{
public static class EnumerableExtensions
{
private static readonly Random random;
static EnumerableExtensions()
{
random = new Random();
}
public static T Random<T>(this IEnumerable<T> input)
{
return input.ElementAt(random.Next(input.Count()));
}
}
}
您可以将扩展定义为类型中的静态方法,但必须使用 Extension
属性标记它们。直接重写您的 C# 代码将是:
open System.Runtime.CompilerServices
[<Extension>]
type EnumerableExtensions() =
static let rnd = System.Random()
[<Extension>]
static member Random(input:seq<_>) =
input |> Seq.item (rnd.Next(Seq.length input))
[1;2;3].Random()