我想知道是否有一种方法可以从匹配模式中传递一个 Option 值而不重新创建它?
var funA x = Some(x)
var funB x =
match funA x with
| Option(y) -> Option(y) // <---- Recreating the Option value. Can I return the very same one?
| _ -> failwith "Whatever"
我想知道是否有一种方法可以从匹配模式中传递一个 Option 值而不重新创建它?
var funA x = Some(x)
var funB x =
match funA x with
| Option(y) -> Option(y) // <---- Recreating the Option value. Can I return the very same one?
| _ -> failwith "Whatever"
如果您想对一个选项进行模式匹配并仅在它存在时才返回它Some
(如果是,则执行其他操作None
),那么您可以as
在模式匹配中使用该构造:
let funB x =
match funA x with
| Some _ as optY -> optY
| _ -> failwith "Whatever"
虽然这个函数对我来说看起来不是很有用 - 为什么在检查以确保它是Some
并且抛出异常时将值作为选项返回?返回类型是option 'a
,但事实上,你总是可以只返回'a
值,所以使用option
...
很可能有更好的解决方案来解决您的问题 - 这取决于您到底想要做什么。查看Option
模块中的功能 - 可能有一些东西可以满足您的需求。