Почему оператор "printfn" в F # отличается от имени в браузере объектов VS2010? - PullRequest
1 голос
/ 23 сентября 2011

Я знал разницу между библиотекой F # и библиотекой .NET, когда вызывал их функции.Но когда я увидел выражение «printfn» в браузере объектов VS 2010, я увидел только «public static T PrintFormatLine (... format)» вместо «printfn».

Почему в выражении «printfn»в библиотеке F # другое имя в браузере объектов VS2010?

Как я могу вызывать функции в библиотеке F #, если нет документов для библиотеки F #, потому что имена в браузере объектов VS 2010 совершенно разные?

1 Ответ

6 голосов
/ 23 сентября 2011

Функция printfn в базовой библиотеке F # снабжена специальным атрибутом CompiledName, который указывает имя функции в скомпилированном виде:

[<CompiledName("PrintFormatLine")>]
let printfn fp = ...

Для чего это нужно? Я думаю, что мотивация состоит в том, что библиотека FSharp.Core.dll должна следовать обычным правилам именования .NET. Однако правила именования F # немного отличаются (допускаются имена в нижнем регистре и т. Д.), Поэтому этот атрибут используется для того, чтобы библиотека выглядела как обычная библиотека .NET.

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

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