是否可以在函数中将闭包作为可选参数?
我需要这样的东西(伪代码):
fn function(x: int, optional expr |int| -> int) -> int
并且用法是这样的:
// just the mandatory argument
n = function(z);
或可选:
// passed closure would be called inside the function
n = function(z, |x| x * x);
如果可能的话,我就无法掌握正确的语法(会欣赏正确匹配表达式的完整示例)。
答案 0 :(得分:5)
可选参数位于wish list,但它们尚未使用该语言,AFAIK。
你显然可以做的是做两个功能
fn function(x: int) -> int {function_with_expr (x, |n|n*n)}
fn function_with_expr(x: int, expr: |int| -> int) -> int
这是标准库中使用的方法。
您还可以将特殊特征传递给函数,例如将ToSocketAddr传递给bind,然后您可以为各种元组类型实现该特征。我不确定是否通过元组传递闭包就像直接传递它一样简单。