Почему я не могу передать функции с явными типами - PullRequest
0 голосов
/ 18 декабря 2018

Я начинающий F #

Работает:

let add x y = x + y
let x : decimal = 2 |> add 3

Не работает:

let add (x : decimal, y : decimal) = x + y
let x : decimal = 2m |> add 3m

1 Ответ

0 голосов
/ 18 декабря 2018

Потому что (x : decimal, y : decimal) - это кортеж из двух десятичных знаков.И подпись вашей функции decimal * decimal -> decimal.Т.е. он принимает один параметр (кортеж) и возвращает десятичное значение.

Вам нужно вместо этого передать два параметра: (x : decimal) (y : decimal)

let add (x : decimal) (y : decimal) = x + y // decimal -> decimal -> decimal
let x = 2m |> add 3m

Помните, если вы видите , в F #, тогдаты смотришь на кортеж.Запятая здесь не используется в качестве разделителя параметров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...