open System
let x = (1, 2)
let (p, q) = x
printfn "A %A" x
printfn "B %A %A" p q
let y = Some(1, 2)
try
let None = y
()
with
| ex -> printfn "C %A" ex
let Some(r, s) = y
printfn "D %A" y
// printfn "E %A %A" r s
- http://ideone.com/cS9bK0 http://ideone.com/cS9bK0
当我取消注释最后一行时,编译器拒绝抱怨的代码
/home/rRiy1O/prog.fs(16,19): 错误 FS0039: 值或构造函数“r”未定义
/home/rRiy1O/prog.fs(16,21): 错误 FS0039: 未定义值或构造函数
解构中是否不允许使用枚举let
?
但首先,即使我注释掉最后一行......什么am我在这里做什么?这是输出:
A (1, 2)
B 1 2
D Some (1, 2)
Update
作为记录,这是固定版本:
open System
let x = (1, 2)
let (p, q) = x
printfn "A %A" x
printfn "B %A %A" p q
let y = Some(1, 2)
try
let (None) = y
()
with
| ex -> printfn "C %A" ex
let (Some(r, s)) = y
printfn "D %A" y
printfn "E %A %A" r s
- http://ideone.com/7qL9mH http://ideone.com/7qL9mH
Output:
A (1, 2)
B 1 2
C MatchFailureException ("/home/MBO542/prog.fs",10,6)
D Some (1, 2)
E 1 2
Perfect.