F#:ToString到底应该如何使用?

F#:ToString到底应该如何使用?,f#,F#,我正在学习F#,但我不明白我应该如何使用ToString。下面是一些尝试。语法错误表示它应该是字符串类型,但实际上是uint->string类型。所以它看起来并不是在调用一个函数?这可以解释吗?这似乎是一件很简单的事情,但我想不出来 open System open System.IO open FSharp.Data [<EntryPoint>] let main (args: string[]) = let htmlPage = HtmlDocument.Load(&q

我正在学习F#,但我不明白我应该如何使用ToString。下面是一些尝试。语法错误表示它应该是字符串类型,但实际上是uint->string类型。所以它看起来并不是在调用一个函数?这可以解释吗?这似乎是一件很简单的事情,但我想不出来

open System
open System.IO
open FSharp.Data

[<EntryPoint>]
let main (args: string[]) =
    let htmlPage = HtmlDocument.Load("https://scrapethissite.com/")

    printfn  "%s" htmlPage.ToString // This causes a syntax error
    
    htmlPage.ToString
    |> (fun x -> printfn "%s" x) // This also causes a syntax error

    0
开放系统
开放系统
打开FSharp.Data
[]
let main(参数:字符串[])=
让htmlPage=HtmlDocument.Load(“https://scrapethissite.com/")
printfn“%s”htmlPage.ToString//这会导致语法错误
htmlPage.ToString
|>(fun x->printfn“%s”x)//这也会导致语法错误
0

。ToString
是一种方法,而不是值。在F#中,每个方法和每个函数都有一个参数。事实上,这就是函数与值(以及方法与属性)的区别:通过使用参数

与C#不同,F#方法和函数不能是无参数的。如果没有任何有意义的内容要传递给该方法,则该方法仍将有一个
unit
类型的参数。查看如何在错误消息中显示此信息<代码>单位->字符串是类型

要调用这样的方法,必须向其传递参数。类型
单位
的唯一值表示为
()
。因此,要调用该方法,应执行以下操作:

    htmlPage.ToString ()
    |> printfn "%s"
你的第一个例子有点复杂。以下措施行不通:

printfn "%s" htmlPage.ToString ()
为什么??因为根据F#语法,这看起来像是调用
printfn
并向其传递三个参数:首先
“%s”
,然后
htmlPage.ToString
,最后
()
。要获得正确的呼叫顺序,必须使用括号:

printfn "%s" (htmlPage.ToString ())

最后,一般性的建议是:尽可能避免使用
F#
code中的方法和类。大多数事情都可以通过函数来完成。在这种特殊情况下,
ToString
方法可以替换为等效函数
string

printfn "%s" (string htmlPage)

.ToString
是一种方法,而不是值。在F#中,每个方法和每个函数都有一个参数。事实上,这就是函数与值(以及方法与属性)的区别:通过使用参数

与C#不同,F#方法和函数不能是无参数的。如果没有任何有意义的内容要传递给该方法,则该方法仍将有一个
unit
类型的参数。查看如何在错误消息中显示此信息<代码>单位->字符串
是类型

要调用这样的方法,必须向其传递参数。类型
单位
的唯一值表示为
()
。因此,要调用该方法,应执行以下操作:

    htmlPage.ToString ()
    |> printfn "%s"
你的第一个例子有点复杂。以下措施行不通:

printfn "%s" htmlPage.ToString ()
为什么??因为根据F#语法,这看起来像是调用
printfn
并向其传递三个参数:首先
“%s”
,然后
htmlPage.ToString
,最后
()
。要获得正确的呼叫顺序,必须使用括号:

printfn "%s" (htmlPage.ToString ())

最后,一般性的建议是:尽可能避免使用
F#
code中的方法和类。大多数事情都可以通过函数来完成。在这种特殊情况下,
ToString
方法可以替换为等效函数
string

printfn "%s" (string htmlPage)

最干净的方法是使用
“%O”
,它隐式调用
.ToString()
。顺便说一句,为了避免很多括号,我经常写
printfn“%s”,最干净的方法是使用
%O”
隐式调用
.ToString()
。顺便说一句,为了避免很多括号,我经常写
printfn“%s”