Ben*_*jol 1 f# compiler-warnings
这个编译器像:
let test Xf Yf = Xf + Yf
Run Code Online (Sandbox Code Playgroud)
这个编译器不喜欢:
let test Xfd Yfd = Xfd + Yfd
Run Code Online (Sandbox Code Playgroud)
警告:通常不应在模式中使用大写变量标识符,并且可以指示拼写错误模式名称.
也许我没有正确搜索,但我没有设法找到解释为什么这是函数参数的情况......
我同意这个错误信息看起来有点神秘,但它有一个很好的动机.根据F#命名准则,应使用命名工会的案例,PascalCase并且编译器正在尝试确保您不会在模式匹配中意外拼错案例名称.
例如,如果您有以下联合:
type Side =
| Left
| Right
Run Code Online (Sandbox Code Playgroud)
您可以编写以下函数,在参数为Left"错误"时打印"ok" .除此以外:
let foo a =
match a with
| Lef -> printfn "ok"
| _ -> printfn "wrong!"
Run Code Online (Sandbox Code Playgroud)
代码中有一个拼写错误 - 我写的只是Lef- 但代码仍然有效,因为Lef可以解释为一个新的变量,因此匹配分配任何一方Lef并始终运行第一个案例.关于大写标识符的警告有助于避免这种情况.
| 归档时间: |
|
| 查看次数: |
691 次 |
| 最近记录: |