Синтаксис экземпляра F # - PullRequest
7 голосов
/ 12 октября 2010

Какой индикатор вы используете для объявления членов в F #?Я предпочитаю

member a.MethodName

это для многих букв, а x используется иначе.

Ответы [ 6 ]

11 голосов
/ 12 октября 2010

Я почти всегда использую x в качестве имени этого экземпляра. За этим нет логики, за исключением того, что он короче других вариантов.

Варианты, которые я видел:

member x.Foo     // Simply use (short) 'x' everywhere
member ls.Foo    // Based on type name as Benjol explains
member this.Foo  // Probably comfortable for C# developers
member self.Foo  // I'm not quite sure where this comes from!
member __.Foo    // Double underscore to resemble 'ignore pattern' 
                 // (patterns are not allowed here, but '__' is identifier)

Опция, основанная на имени типа, имеет некоторый смысл (и хороша, когда вы вкладываете выражения объекта в тип), но я думаю, что может быть довольно сложно найти разумные две / три сокращения для каждого имени типа. 1009 *

3 голосов
/ 12 октября 2010

Нет системы. Интересно, должен ли он быть у меня, и я уверен, что скоро будет парадигма с собственной книгой. Я склонен использовать первые буквы имени типа, как Бенджол.

Это степень свободы в F #, без которой мы могли бы явно обойтись. :)

1 голос
/ 12 октября 2010

Поскольку я работаю в мире .NET, я склонен использовать «это» в предположении, что большинство людей .NET, которые сталкиваются с F #, поймут его значение.Конечно, другой край этого меча состоит в том, что они могут понять, что «это» является необходимой формой.

. Самостоятельная документация .NET касается, я думаю, я бы предпочел либо: "x" в целом, либо - как Benjol - некоторое сокращение имени класса (например, "st" для SuffixTrie и т. Д.).).

1 голос
/ 12 октября 2010

Я в основном склонен использовать self.MethodName по той единственной причине, что self представляет текущий экземпляр по соглашению на другом языке, который я использую чаще всего: Python. Если подумать, я некоторое время пользовался Delphi, и вместо this.

у них тоже есть self.

Я пытался преобразовать в стиль x.MethodName, похожий на две книги, из которых я учусь: Функциональное программирование в реальном мире и Эксперт F # . Пока что мне это не удается, главным образом потому, что обращение к x, а не к self (или this) в теле метода все еще смущает меня.

Полагаю, я говорю о том, что должно быть значимое соглашение. Использование this или self уже стандартизировано другими языками. И лично я не считаю трехбуквенную экономику такой полезной.

1 голос
/ 12 октября 2010

Я склонен использовать какие-то инициалы, которые представляют тип так:

type LaserSimulator = 
    member ls.Fire() = 
0 голосов
/ 12 октября 2010

Логика, которую я использую, такова: если я не использую ссылку на экземпляр внутри определения члена, я использую двойное подчеркивание ('__'), а-ля выражения привязки. Если я ссылаюсь на экземпляр внутри определения (что я делаю не часто), я склонен использовать 'x'.

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