FS.Srp.Core.String中的concat与System.String

时间:2017-04-21 21:21:06

标签: string f#

我注意到String.concat中有一个小写的Microsoft.FSharp.Core和一个带有多个重载的大写System.String.Concat。如果我输入String.cSystem.String.C

,Intellisense会选择其中一个

String.xyz中的Microsoft.FSharp.Core函数是否优于System.String.Xyz函数,反之亦然?每种功能的优缺点是什么?

一般来说,在FSharp.Core中使用函数有什么优缺点?

1 个答案:

答案 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或具有意义的东西。