Это вопрос определения языка F #. Мне было интересно, почему F # не может автоматически вывести Явные поля в первую очередь? А затем DefaultValue автоматически также ...F # класс Явные поля и DefaultValue
Почему есть другой синтаксис класса (так много из них в F #) ... где вместо let
связанное поле без значения (но с типом) может быть интерпретировано автоматически как (значение) val
. Кроме того, когда для параметра DefaultValue требуется по умолчанию конструктор по умолчанию, почему бы просто не вывести его автоматически?
let myInt1 : int
интерпретируется как значение: val myInt1 : int
или [<DefaultValue>] val myInt : int
Наконец (может быть другая тема, и поэтому, пожалуйста, рассмотреть его в качестве второстепенного запроса), поэтому явные поля (или открытые поля) требуют справочник самоидентификатора в методах члена? И снова синтаксис реализации класса теряет большую часть своей простоты.
Спасибо!
Я не думаю, что вы получите авторитетный ответ здесь. Если бы я был вами, я бы открыл вопрос об обслуживании и посмотрел, каков будет ответ. –
Язык должен сделать простые операции простыми и необычными. Явные поля - необычная вещь в моей книге - я даже не могу думать о ситуации, когда я чувствовал необходимость использовать явный синтаксис определения класса над неявным. Поэтому для меня имеет смысл * не * оптимизировать для необычного сценария. – scrwtp
Добавление в @scrwtp: F # является функционально-первым языком. Классы редко используются в программах F # - в основном для взаимодействия с другими языками .NET. – Petr