Tôi có một hàm trong C# và tôi muốn chuyển nó (trong số một số thứ khác) sang F #, chỉ để làm việc đó. Thật không may, tôi chỉ cần nhấn một trường hợp mà dường như không có cách nào để thể hiện điều này trong F #: Hãy sử dụng chức năng C# nàyHowto viết một hàm lấy số biến số của các đối số trong F #
public static T Min<T>(params T[] p) where T : IComparable
{
T m1 = p[0];
foreach (T v in p)
{
m1 = (m1.CompareTo(v) < 0) ? m1 : v;
}
return m1;
}
Tôi nghĩ điều này sẽ khá dễ dàng, nhưng tôi không hiểu làm cách nào sẽ chỉ định một danh sách đối số biến trong F #. Tôi đã thử điều này:
let rec Min l =
match l with
| [] -> 0 // should throw exception here
| [v] -> v
| (h::t) -> min h (Min t)
nhưng gọi từ C# mong đợi Microsoft.FSharp.Collections.List
. Có thể làm cho nó mong đợi một params T[]
, và nếu có, làm thế nào?
Đối với giá trị của nó, tôi khuyên bạn nên viết lại chức năng của bạn như thế này: let min l = Seq.reduce min l – Juliet
Đúng, chỉ nhìn thấy nó, đã trải qua các phương thức Seq ngay bây giờ (lần truy cập đầu tiên là gấp, nhưng giảm là chính xác những gì tôi đang tìm kiếm) – Anteru