首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将默认参数作为默认参数传递给函数

将默认参数作为默认参数传递给函数
EN

Stack Overflow用户
提问于 2019-12-19 03:37:16
回答 1查看 63关注 0票数 0

我有许多带有默认参数的函数,例如。

代码语言:javascript
复制
let h_foo a b = a * b
let foo ?(f_heuristic=h_foo) a b = f_heuristic a b

(* caller of foo where may want to change `f_heuristic` *)
let fn ?(f=foo) a b =
  f a b

fn 5 6                                            (* => 30 *)

但是,我希望能够使用包装器函数的默认值的不同值来调用包装器函数。我遇到了下面的错误,这让我很困惑,我不知道如何解决。

代码语言:javascript
复制
fn ~f:(fun a b -> a + b) 5 6
(* Line 1, characters 6-24:
 * Error: This function should have type
 *          ?f_heuristic:(int -> int -> int) -> int -> int -> int
 *        but its first argument is not labelled *)

在Ocaml中这是可能的吗,或者这是错误的方法?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-19 05:41:57

试试这个:

代码语言:javascript
复制
let fn ?(f=(foo : int -> int -> int)) a b = f a b;;

问题是代码中可选参数f的类型被推断为具有可选参数的foo的类型。通过将默认值更改为您想要的类型,您也可以为fn提供您想要的类型。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59398992

复制
相关文章

相似问题

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