不了解类型转换的F#语法

这有效:

let a = 3
let b = string b
let c = a |> string

但是:

let a = string j.SelectToken("hello")

不起作用

let a = j.SelectToken("hello") |> string

有效。

那是为什么?

xbl_lkz 回答:不了解类型转换的F#语法

编译器认为您要将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)

为什么已经在https://stackoverflow.com/a/23848236/5652483回答了

https://github.com/fsharp/fslang-suggestions/issues/644

上有一个公开的问题,有趣的讨论
本文链接:https://www.f2er.com/3137454.html

大家都在问