返回所有字符均大写的字符串

时间:2019-03-03 17:44:15

标签: .net string f#

我正在尝试编写一个函数,该函数使用正向组合返回一个包含所有大写字符的字符串。

这是我的代码,没有前向组合:

let toUpper s = String.map System.Char.ToUpper s

这是我尝试使用正向合成的方法:

let toUpper2 s = s >> Seq.map System.Char.ToUpper >> Seq.map string >> String.concat ""

我使它可以与管道前移一起使用,但是不能使其与前向组合一起使用。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:6)

这两个等效项:

let toUpper1   =      Seq.map System.Char.ToUpper >> Seq.map string >> String.concat ""
let toUpper2 s = s |> Seq.map System.Char.ToUpper |> Seq.map string |> String.concat ""

但是toUpper1存在问题。它是通用的,会导致ML语言出现问题:

  

typecheck:值限制。值“ toUpper1”已推断   具有通用类型       val toUpper1:('_a->字符串)当'_a:> seq时,要么显式指定'toUpper1'的参数,要么,如果您不打算使用   要通用,请添加类型注释。

因此需要类型注释:

let toUpper1 : string -> string = Seq.map System.Char.ToUpper >> Seq.map string >> String.concat ""