Как типы F # переходят на C #? - PullRequest
5 голосов
/ 01 октября 2010

Если в F # у меня есть методы, такие как:

drawBox
drawSphere
paintImage

Будут ли они переведены в C #, точно так же?

Если это так, то не нарушит ли это соглашения об именах в C #, где методы должны быть PascalCase?

Или я должен сделать их PascalCase в F #, чтобы исправить это?

Ответы [ 4 ]

8 голосов
/ 01 октября 2010

Вы должны следовать F # Руководству по проектированию компонентов .

Примечательные части:

  • Использовать соглашения об именах и капитализации .NET для объектовориентированный код, включая библиотеки F # -facing.
  • Использовать PascalCase или camelCase для открытых функций и значений в модулях F #.camelCase обычно используется для открытых функций, которые предназначены для неквалифицированного использования (например, invalidArg), и для "стандартных функций сбора данных" (например, List.map).В обоих этих случаях имена функций во многом похожи на ключевые слова в языке.

Другой способ разрезать его:

  • члены и types всегда должен быть PascalCase, точно так же, как C #
  • объектами let-bound в модулях может быть camelCase, но обычно это не тот материал, который вы бы выставили публично из библиотеки, которая предназначенапотребляется C #
5 голосов
/ 01 октября 2010

Как уже отмечали другие, имена скомпилированных членов точно такие же, как имена, которые вы написали в коде F #. В целом, при объявлении классов рекомендуется следовать стандартным соглашениям об именах C #. При объявлении модуля F # вы можете использовать camelCase (особенно для модулей, предназначенных для пользователей F #) или PascalCase, если вы хотите использовать их из C #.

Также есть один прием, который вы можете использовать (он используется в базовой библиотеке F # для таких функций, как List.map, которые фактически скомпилированы как List.Map). Вы можете использовать атрибут CompiledName для указания имени в скомпилированной версии:

module Bar = 
  [<CompiledName("Foo")>]
  let foo a = a + 1

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

1 голос
/ 01 октября 2010
Имена методов типа

будут одинаковыми как в F #, так и в C #. если вы хотите PascalCase в C # - вы должны использовать это соглашение об именах в F #, то же самое с camelCase.

0 голосов
/ 01 октября 2010

Соглашения об именах предназначены для людей. Компиляторам и средам исполнения все равно, будут ли все имена переменных полностью нечитаемыми, они все равно будут работать.

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