【问题标题】:F# type error: String vs Async<string>F# 类型错误:字符串与异步<字符串>
【发布时间】:2015-05-24 01:02:43
【问题描述】:

我是编程新手,F# 是我的第一个 .NET 语言。

这是我目前写的一些代码:

let downloadFromWebsite (url: string) =
    async { 
        let uri = new System.Uri(url)
        let webClient = new WebClient()
        let! html = webClient.AsyncDownloadString(uri)
        printfn "Read %d characters from %s" html.Length url
        return html
        }

let results = downloadFromWebsite @"http://plato.stanford.edu"
printf "%s" results

这是错误信息:

~vs8222.fsx(19,13): 错误 FS0001: 这个表达式应该有 类型 字符串,但这里有类型 异步

出了什么问题?我应该做出哪些改变?

【问题讨论】:

    标签: types f#


    【解决方案1】:

    resultsAsync&lt;string&gt;,而您使用的格式字符串需要 string。您需要先运行计算并获得结果,然后才能打印它。你可以使用Async.RunSynchronously:

    let results = downloadFromWebsite @"http://plato.stanford.edu" |> Async.RunSynchronously
    printf "%s" results
    

    【讨论】:

    • 谢谢,李。我有一个后续问题:如果我想将结果写入 .txt 文件,我应该怎么做?我不太清楚如何使用 StreamWriter 等。对不起,如果这是一个愚蠢的问题。
    • @MY_G - 最简单的做法是使用File.WriteAllText,如果您只想写入整个字符串。
    猜你喜欢
    • 2019-11-21
    • 1970-01-01
    • 1970-01-01
    • 2011-06-01
    • 2019-02-27
    • 2017-02-20
    • 2018-04-24
    • 2016-07-02
    • 2021-09-20
    相关资源
    最近更新 更多