Właśnie uczę się F # i konwertuję bibliotekę metod rozszerzania C# na F #. Obecnie pracuję na realizację funkcji o nazwie ConvertFirstLetterToUppercase oparta na # realizacji C poniżej:Optymalizacja manipulacji ciągiem F #
public static string ConvertFirstLetterToUppercase(this string value) {
if (string.IsNullOrEmpty(value)) return value;
if (value.Length == 1) return value.ToUpper();
return value.Substring(0, 1).ToUpper() + value.Substring(1);
}
F # realizacja
[<System.Runtime.CompilerServices.ExtensionAttribute>]
module public StringHelper
open System
open System.Collections.Generic
open System.Linq
let ConvertHelper (x : char[]) =
match x with
| [| |] | null -> ""
| [| head; |] -> Char.ToUpper(head).ToString()
| [| head; _ |] -> Char.ToUpper(head).ToString() + string(x.Skip(1).ToArray())
[<System.Runtime.CompilerServices.ExtensionAttribute>]
let ConvertFirstLetterToUppercase (_this : string) =
match _this with
| "" | null -> _this
| _ -> ConvertHelper (_this.ToCharArray())
Może ktoś mi pokazać bardziej zwięzłego realizacji wykorzystujący bardziej naturalny F # składnia?
Dziękuję wszystkim za odpowiedzi, nauczyłem się kilku nowych operatorów i korzystania z dopasowywania wzorców. :-) Myślę, że następny krok? Test wydajności? lol –