我注意到String.concat
中有一个小写的Microsoft.FSharp.Core
和一个带有多个重载的大写System.String.Concat
。如果我输入String.c
或System.String.C
String.xyz
中的Microsoft.FSharp.Core
函数是否优于System.String.Xyz
函数,反之亦然?每种功能的优缺点是什么?
一般来说,在FSharp.Core中使用函数有什么优缺点?
答案 0 :(得分:4)
我不确定这两个是否相同:
FSharp的String.concat
用于将一系列字符串连接到带有分隔符的单个字符串中:
let strings = [ "tomatoes"; "bananas"; "apples" ]
let fullString = String.concat ", " strings
printfn "%s" fullString
System.String.Concat
用于将2个(或更多个)单独的字符串连接在一起。
System.String.Join
与FSharp的String.concat
相同 - 它只是它的包装actually:
[<CompiledName("Concat")>]
let concat sep (strings : seq<string>) =
String.Join(sep, strings)
编写F#时,您会发现调用F#函数比其他.NET程序集更加惯用。例如,您可以部分应用F#函数,但不能使用.NET方法调用。
e.g。总是以空格连接的函数可以这样定义:
let concatWithSpace xs =
String.concat " " xs
如果您将其作为域的一部分进行建模,则会更有用,例如:而不是concatWithSpace
,它可以被称为formatReportElements
或具有意义的东西。