这可能很简单,但有人可以解释为什么下面的模式匹配不明智吗?它说其他规则例如1,0,_永远不会匹配。F#模式与参数匹配
let matchTest(n : int) =
let ran = new Random()
let i = ran.Next(0, 2)
match i with
| n -> printfn "%i" n
| 1 -> printfn "1"
| 0 -> printfn "0"
| _ -> printfn "impossible"
这样做的同样的事情:
let matchTest(n : int) =
let ran = new Random()
let i = ran.Next(0, 2)
let m = n
match i with
| m -> printfn "%i" m
| 1 -> printfn "1"
| 0 -> printfn "0"
| _ -> printfn "impossible"
那么,为什么不能与之相匹配n
或m
直接在这里?
嗯。这真的是影子吗?而不是实际范围?既然模式是lambda?或者是我的其他答案,然后错了?或者是阴影和范围/ lambda相同?最后但并非最不重要的是:我感到困惑吗? –
@HelgeReneUrholm我同意阴影绝对是正确的术语。尽管范围可以发挥作用,并且你并不完全不正确,但建议关键方面是嵌套正在进行 - 记住(在F#中搜索“光语法”),每行都隐含有一个“in”连接它到下一个表达式 –