Синтаксис конструктора F # - PullRequest
5 голосов
/ 07 января 2011

при использовании классов .net бывают случаи, когда нам не требуется скобка для передачи одного параметра, например

let foo = DirectoryInfo "boo"

но что-то более сложное с использованием одного параметра, нам нужна скобка ... Кто-нибудь знает правила синтаксического анализа, когда это правда?

1 Ответ

4 голосов
/ 07 января 2011

В F # все функции принимают один параметр. Теперь это может сначала немного запутать, потому что у вас может быть функция, которая, кажется, принимает более одного параметра, но вы фактически передаете один параметр, который является кортежем.

Вот простой пример конструкторов, которые выглядят так, как будто они принимают более 1 параметра:

let foo = DirectoryInfo "boo" //passing 1 argument
let foo2 = DirectoryInfo ("boo") //passing 1 argument that is a tuple
let foo3 = StringBuilder ("blah", 100) //passing 1 argument again
let foo4 = StringBuilder "blah" 100 //does not compile

Для получения дополнительной информации об этом стиле, проверьте Кортежи на MSDN .

Теперь, есть еще один немного другой способ сделать так, чтобы казалось, что функция принимает более 1 аргумента. Это называется curry , что вы увидите чаще, когда имеете дело только с кодом F #. Вот быстрый пример этого.

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