首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用无Option.flatten?

如何使用无Option.flatten?
EN

Stack Overflow用户
提问于 2017-10-23 18:41:01
回答 1查看 757关注 0票数 2

在选项模块上应用平面函数时出错:

代码语言:javascript
复制
let flatten  =
function
| None          -> None
| Some innerOpt -> innerOpt

这只适用于输入,比如:一些大约1。但是如果输入是"None“,那么我会得到以下错误:

代码语言:javascript
复制
flatten None 

error FS0030: Value restriction. The value 'it' has been inferred to have generic type
    val it : '_a option
Either define 'it' as a simple data term, make it a function with explicit arguments or, if you do not intend for it to be generic, add a type annotation.

在没有仿制药的情况下,扁平化应该如何使用?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-23 19:05:14

flatten是一个具有'a option option -> 'a option类型的泛型函数。当参数为it时,编译器无法推断用于自动REPL变量None的类型参数(这是前一个表达式的结果)。您可以指定自己的变量:

代码语言:javascript
复制
let it : int option = flatten None;;

显式指定None的类型

代码语言:javascript
复制
flatten (None : int option option);;

代码语言:javascript
复制
flatten (Option<int option>.None);;

或者将泛型参数显式地指定给flatten

代码语言:javascript
复制
flatten<int> None;;

这将生成一个警告,您可以通过将类型参数显式为flatten来删除该警告:

代码语言:javascript
复制
let flatten<'a> (o : 'a option option) =
    match o with
    | None          -> None
    | Some innerOpt -> innerOpt
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46896320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档