2011-09-15 30 views
2

我很好奇为什么主构造函数参数必须在类型定义中缩进开放paren之外,但在调用时可能会使用类型名称缩进。定义与调用的不同参数格式化

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

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

解决的办法是缩进ARGS超越你的第二个显示器的左边缘:

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

我不知道为什么这些规则在这两种情况下的不同。

这也适用于方法。我只是选择了主构造函数作为例子。

回答

2

我不记得,但请注意这

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

也是允许的。

+0

我仍然不明白为什么C#代码格式不起作用。 :-) – Daniel

+0

它可能不起作用,因为编译器解析器不处理这种情况:)。在这种情况下,'('创建一个新块,如果')'不在同一级别,那么它不起作用 – Ankur