let reverseString (myStr: string)=
myStr|>Seq.toList|>List.rev |> Array.ofList|>string
Run Code Online (Sandbox Code Playgroud)
我正在F#中为此功能工作。我运行上面的一个并想得到例如我做的结果
reverseString "abc"
Run Code Online (Sandbox Code Playgroud)
我希望它将显示出来,cba但实际上它返回System.Char []。那可能是问题所在,因为我想查看类似“ cba”的结果,而不是检查我做对了还是不正确。谢谢!
我认为问题可能是的构造函数System.String和string函数之间的混淆。
string该函数通过基本上调用ToString()将Char对象仅输出类型名称的字符串转换为字符串System.Char[]。
另一方面System.String,该类有几个重载的构造函数,其中一个是char数组,因此会产生一个字符串:
[| 'a'; 'b'; 'c'|] |> string |> printfn "%A" // "System.Char[]"
[| 'a'; 'b'; 'c'|].ToString() |> printfn "%A" // "System.Char[]"
[| 'a'; 'b'; 'c'|] |> String |> printfn "%A" // "abc"
6 |> string |> printfn "%A" // "6"
6 .ToString() |> printfn "%A" // "6"
6 |> String |> printfn "%A" // error: no overloads for int
"abc" |> string |> printfn "%A" // "abc"
"abc" .ToString() |> printfn "%A" // "abc"
"abc" |> String |> printfn "%A" // Strangelly enough gives error too
Run Code Online (Sandbox Code Playgroud)