Sol*_*lma 3 f# list pattern-matching
F#可以轻松解压元组.解包列表也是可行的,但编译器会发出警告:
let m = [1; 2; 3]
let [a; b; c] = m
// Incomplete pattern matches on this expression. For example, the value '[_;_;_;_]' may indicate a case not covered by the pattern(s)
Run Code Online (Sandbox Code Playgroud)
有没有办法避免这种警告?
您可以使用#nowarn指令(在您的情况下#nowarn "25")禁用每个文件的警告,也可以在命令行上禁用警告--nowarn.
有关详细信息,请查看F#编译器指令.
首次禁用时,目前无法再次重新启用警告.
如果无法解压缩元素的数量,您的匹配可能(意外地)导致运行时错误[a;b;c],因此您可以使用明确关于risc的完全匹配:
let m = [1;2;3]
let (a,b,c) =
match m with
| [a;b;c] -> (a,b,c)
| _ -> failwith "Expected exactly three items in m"
Run Code Online (Sandbox Code Playgroud)