这没关系
let staticParams = [ProvidedStaticParameter("filename", typeof<string>)
ProvidedStaticParameter("forcestring", typeof<bool>, false)]
但这不是
let filename3 = ProvidedStaticParameter("filename", typeof<string>)
let forcestring = ProvidedStaticParameter("forcestring", typeof<bool>, false)
let staticParams = [filename3
forcestring]
有什么区别? 然后,如果我输入此内容,则会正确识别aggain
let filename3 = ProvidedStaticParameter("filename", typeof<string>)
let forcestring = ProvidedStaticParameter("forcestring", typeof<bool>, false)
let staticParams = [filename3 ;
forcestring]
答案 0 :(得分:2)
;
是一种古老的语法(来自ML)。除非您在同一行中键入多个元素(例如[ 1; 2 ]
),否则没有理由使用它。同样在记录中,您不必在字段之间放置;
。
第二个代码无法编译,因为所有元素必须具有相同的缩进级别:
let staticParams = [filename3
forcestring]
答案 1 :(得分:2)
在F#中,缩进很重要。例如:
let staticParams = [filename3
forcestring]
两个值具有相同的缩进级别,它们被解析为列表元素。
但是在以下情况中:
let staticParams = [filename3
forcestring]
// ^
// Notice different indentation here.
将两个值解析为filename3
到forcestring
的函数应用程序,因此出现错误消息。
由于;
是列表分隔符,因此在上一个示例中,F#parser期望下一行中的另一个列表元素。因此,那里的错误缩进没有问题。