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