如何在F#中迭代字符串?

Ono*_*cci 4 string f#

我有以下F#代码:

//Array iter version
let toSecureString (s:string) =
    let sString = new SecureString()
    s |> Array.iter (fun cl -> sString.AppendChar cl)
    sString
Run Code Online (Sandbox Code Playgroud)

我正在尝试将.Net字符串转换为.Net SecureString.当我尝试编译时,我收到类型不匹配错误:

stdin(60,10): error FS0001: Type mismatch. Expecting a
    string -> 'a
but given a
    'b [] -> unit
The type 'string' does not match the type ''a []'
Run Code Online (Sandbox Code Playgroud)

如果我没有指定s的类型,这是我看到的类型签名:

val toSecureString : char [] -> SecureString
Run Code Online (Sandbox Code Playgroud)

但是因为我不想每次都为参数手动创建一个字符数组,所以似乎我错过了一些东西.如何使用传入的字符串参数使此代码工作?

如果它有所作为我正在测试F#2.0(Build 4.0.40219.1).

任何提示欢迎.如果已经询问并回答了这个问题,请在评论中发布一个链接,我将关闭此问题.

kvb*_*kvb 15

使用Seq.iter,而不是Array.iter因为字符串是char seqs而不是char[]s.


pad*_*pad 5

要将字符串作为a操作char seq,可以使用String模块.这有效:

let toSecureString s =
    let sString = new SecureString()
    String.iter sString.AppendChar s
    sString
Run Code Online (Sandbox Code Playgroud)