Не понимает синтаксис F # с преобразованием типов - PullRequest
0 голосов
/ 08 ноября 2019

Это работает:

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

, но:

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

не работает, а

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

работает.

почемуэто что?

Ответы [ 2 ]

1 голос
/ 10 ноября 2019

Если вы не заключите 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

1 голос
/ 08 ноября 2019

Компилятор считает, что вы хотите передать 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
...