为什么System.Char []输出而不是字符串值?

时间:2019-03-18 14:35:40

标签: string f#

let reverseString (myStr: string)=
    myStr|>Seq.toList|>List.rev |> Array.ofList|>string

我正在F#中为此功能工作。我运行上面的一个,并希望得到例如我做的结果

reverseString "abc"

我希望它会显示cba,但实际上它返回System.Char []。那可能是问题所在,因为我想查看类似“ cba”的结果,而不是检查我做对了还是不正确。谢谢!

1 个答案:

答案 0 :(得分:6)

我认为问题可能是System.Stringstring函数的构造函数之间的混淆。

string该函数通过基本调用ToString()将任何对象转换为字符串,对于Char数组,该System.Char[]仅输出类型名称:System.String

另一方面,[| '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 类具有几个重载的构造函数,其中一个是char数组,因此会产生一个字符串:

<style type="text/css">
html, body{
    height:100%;
    margin:0;
    padding:0;
}
body{
    overflow: scroll;
}
</style>
<div style="display:flex;">
    <div style="min-width:50%;height:100%;border:solid silver 1px;">LeftLeftLeftLeftLeftLeft.......repeat.....</div>
    <div style="min-width:50%;height:100%;border:solid silver 1px;">RightRightRight.....repeat.......</div>
</div>