F # чувствителен к регистру? - PullRequest
5 голосов
/ 18 сентября 2010

Я искал здесь и в сети, но ответа не было.

Причина, по которой я спрашиваю, так как соглашения F # кажутся предпочтительными для некапитальных букв, использование типов BCL с соглашениями Паскаля выглядит странно в F #, как в:

let stringD = String.Join(" ",[| stringA; stringB |])

Похоже, это будет больше в духе F #, например:

let stringD = string.join(" ",[| stringA; stringB |])

Ответы [ 3 ]

8 голосов
/ 18 сентября 2010

Хорошо, несколько вещей.

Во-первых, F # чувствителен к регистру.

Во-вторых, соглашения F # для именования описаны в F # Руководства по проектированию компонентов ,Вкратце, члены с привязкой внутри модулей F # используют camelCase, но все конструкции .NET OO используют PascalCase.Это верно для всей библиотеки F #.

Наконец, в F # string это не ключевое слово, скорее это как название сокращения типа (для System.String), так иимя функции (которая преобразуется в строку).В контексте выражения string.Join имя функции имеет приоритет, поэтому string.Join не работает.А из-за чувствительности к регистру System.String.join никогда не будет работать (если, например, вы не добавили элемент расширения).

2 голосов
/ 18 сентября 2010

Да, F # чувствителен к регистру

let stringD = string.join(" ",[| stringA; stringB |])

Не будет работать.

1 голос
/ 18 сентября 2010

Удивительно, но Спецификация языка F # прямо не упоминает чувствительность к регистру, но ссылается на использование другого регистра для внутренних / языковых и пользовательских типов параметров (5.1.2)

Хотя мой опыт работы с F # ограничен (помимо приложений в стиле Hello World), я бы предположил, что string.join не привязывается к String.Join.

...