2016-07-15 6 views
3

zu machen Ich habe ein Array von Zahlen im String-Format (zB [| "1"; "2"; "3" ... |]) und möchte sie in konvertieren verdoppelt, aber ich möchte es in CultureInvariant tun. Natürlich könnte ich tun: DochElegantere Art, CultureInvariant Double.parse in F #

[|"1"; "2"|] |> Array.map (fun (a) -> Double.Parse(a, CultureInfo.InvariantCulture)) 

, ist es eine Möglichkeit, es so zu tun:

[|"1"; "2"|] |> Array.map Double.Parse 

, aber mit CultureInfo.InvariantCulture? Dieser Code wird viel besser lesbar aussehen. Mit anderen Worten, gibt es Möglichkeiten, CultureInfo.InvariantCulture an Double.parse im Flow zu übergeben oder CultureInfo.InvariantCulture global für alle Programme/Skripts festzulegen.

Antwort

4

In F # double und float sind dasselbe, und beide entsprechen eine C# double. Siehe this answer.

Daher können Sie einfach den float Operator für diese, die Konvertierungen von vielen Arten einschließlich Saiten Griffe:

[|"1"; "2"|] |> Array.map float 

Die F # Umwandlung Betreiber alle vernünftig CultureInfo.InvariantCulture ohne die Notwendigkeit verwenden, damit Sie es angeben: Siehe this function aus dem F # -Quellcode, der vom Operator float verwendet wird.

Wenn Sie C# kompatible Terminologie verwenden möchten, können Sie den Operator double verwenden, der nur ein Alias ​​für float ist.

Wenn Sie eine 32-Bit-Gleitkommazahl (das C# -Floss) benötigen, können Sie float32 verwenden.

3

Ziemlich einfach eine Hilfsfunktion zu definieren, und verwenden Sie diese:

let ParseInvariant a = Double.Parse(a, CultureInfo.InvariantCulture) 
let b = [|"1"; "2"|] |> Array.map ParseInvariant 

oder eine Erweiterungsmethode definieren:

type Double with 
    static member ParseInvariant a = Double.Parse(a, CultureInfo.InvariantCulture) 
let b = [|"1"; "2"|] |> Array.map Double.ParseInvariant 
+1

Haben Sie nicht über Erweiterungsmethode gedacht, danke! – Darkkey

+0

Normalerweise bezeichnen wir diese als Erweiterungselemente in F #, da sie nicht auf Methoden beschränkt sind :) – smoothdeveloper

Verwandte Themen