Различно форматиране на аргумент за дефиниции срещу извиквания

Любопитно ми е защо първичните аргументи на конструктора трябва да бъдат с отстъп отвъд отварящата скоба, в дефиницията на типа, но могат да бъдат с отстъп с името на типа, когато се извикват.

type AnIncrediblyLaboriouslyEternallyLongTypeName(arg1, arg2,
      arg3, arg4) = //WARNING: Possible incorrect indentation
  class end

let x = AnIncrediblyLaboriouslyEternallyLongTypeName(
          1, 2, 3, 4) //works

Решението е да отстъпите аргументите отвъд левия ръб на вашия втори монитор:

type AnIncrediblyLaboriouslyEternallyLongTypeName(arg1, arg2,
                                                  arg3, arg4) = 
  class end

Чудя се защо правилата са различни в тези два сценария.

Това важи и за методите. Просто избрах първични конструктори като пример.


person Daniel    schedule 15.09.2011    source източник


Отговори (1)


Не си спомням, но имайте предвид, че това

type AnIncrediblyLaboriouslyEternallyLongTypeName
        (arg1, arg2, arg3, arg4) = // works
  class end 

също е позволено.

person Brian    schedule 15.09.2011
comment
Все още не мога да разбера защо форматирането на C# код не работи. :-) - person Daniel; 15.09.2011
comment
Вероятно не работи, защото парсерът на компилатора не обработва такива случаи :). В този случай изглежда, че "(" създава нов блок и ако ")" не е на същото ниво, тогава не работи - person Ankur; 16.09.2011