这有效:
let a = 3
let b = string b
let c = a |> string
但是:
let a = string j.SelectToken("hello")
不起作用
let a = j.SelectToken("hello") |> string
有效。
那是为什么?
这有效:
let a = 3
let b = string b
let c = a |> string
但是:
let a = string j.SelectToken("hello")
不起作用
let a = j.SelectToken("hello") |> string
有效。
那是为什么?
编译器认为您要将j.SelectToken传递给字符串。请记住,功能就是价值,所以这是合法的。其中任何一项工作:
let a = j.SelectToken "hello" |> string
let a = string (j.SelectToken "hello")
let a = string <| j.SelectToken "hello"
let a = "hello" |> j.SelectToken |> string
,
除非将j.SelectToken("hello")
括在括号中,否则会出现此错误:
Successive arguments should be separated by spaces or tupled,and arguments involving function or method applications should be parenthesized
F# Compiler(597)
上有一个公开的问题,有趣的讨论