作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
-6ren">
我正在尝试使用 OR 模式,如 here 所述:
let foo = function
| Some (0, x) when x > 0 | None -> "bar"
| _ -> "baz"
error FS0010: Unexpected symbol '|' in pattern matching. Expected '->' or other token.
when
有关系吗? guard ?
最佳答案
A when
守卫指的是单个案例,无论组合了多少模式。需要分开的案例:
let foo = function
| Some (0, x) when x > 0 -> "bar"
| None -> "bar"
| _ -> "baz"
let foo value =
let ret = "bar"
match value with
| Some (0, x) when x > 0 -> ret
| None -> ret
| _ -> "baz"
let (|Bar|_|) = function
| Some(0, x) when x > 0 -> Some()
| None -> Some()
| _ -> None
let foo = function
| Bar -> "bar"
| _ -> "baz"
关于f# - OR 模式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10986353/
我是一名优秀的程序员,十分优秀!