Acabo de aprender F # y he estado convirtiendo una biblioteca de métodos de extensión C# en F #. Actualmente estoy trabajando en la implementación de una función llamada ConvertFirstLetterToUppercase basado en la C# aplicación a continuación:Optimización de la manipulación de la secuencia 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);
}
El F # aplicación
[<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())
Alguien me puede mostrar una aplicación más concisa utilizando más natural F # ¿sintaxis?
Gracias a todos por las respuestas, aprendí algunos operadores nuevos y cómo usar la coincidencia de patrones. :-) Supongo que el próximo paso? ¿Pruebas de rendimiento? lol –