代码之家  ›  专栏  ›  技术社区  ›  alex

详细语法在轻量级模式F下不起作用#

f#
  •  1
  • alex  · 技术社区  · 7 年前

    微软F#手册上说 verbose syntax is always enabled

    但是,下面的代码片段将数字6打印十次

    #light "off"
    
    let f x = for i = 1 to 10 do printfn "%d" x done in f 6
    

    而以下情况会产生错误: Unexpected keyword 'in' in binding. Expected incomplete structured construct at or before this point or other token.

    let f x = for i = 1 to 10 do printfn "%d" x done in f 6
    

    这两个代码段在结构上有什么区别?为什么启用轻量级语法时会产生错误?

    1 回复  |  直到 7 年前
        1
  •  0
  •   AMieres    7 年前

    此详细代码:

    #light "off"
    
    let f x = for i = 1 to 10 do printfn "%d" x done in f 6
    

    相当于此轻量级代码:

    let f x = 
        for i = 1 to 10 do 
            printfn "%d" x 
    f 6
    

    do ... done for let ... in ... 是表达式的块 f 6 .

    关于轻量级应用程序出现问题的原因,有两种可能:

    即使启用了轻量级语法,也可以使用verbose 一些构造的语法。