如何在Julia中为多参数函数使用pipe管道?
在Julia中用Pipe管道调用多参数函数的简洁写法
当你需要用|>管道操作符调用多参数函数时,完全没必要每次都写冗长的匿名函数,Julia提供了几种更简洁的实现方式:
1. 部分应用语法(Julia 1.5+)
你设想的two_args_fn(_, 2)写法是完全可行的,_在这里作为占位符,代表管道传入的参数会自动填充到这个位置:
two_args_fn(a, b) = a + b 1 |> two_args_fn(_, 2) |> println # 输出3
如果需要固定第一个参数,只需把占位符放到第二个参数的位置:
# 计算固定值2与管道传入值的和 3 |> two_args_fn(2, _) |> println # 输出5
2. 使用Fix1/Fix2工具函数
Base模块中的Fix1和Fix2可以帮你固定多参数函数的其中一个参数,生成适配管道的单参数函数:
Fix2(f, y):固定函数f的第二个参数为y,生成仅接收第一个参数的函数Fix1(f, x):固定函数f的第一个参数为x,生成仅接收第二个参数的函数
示例代码:
using Base: Fix1, Fix2 two_args_fn(a, b) = a + b # 固定第二个参数为2 1 |> Fix2(two_args_fn, 2) |> println # 输出3 # 固定第一个参数为2 3 |> Fix1(two_args_fn, 2) |> println # 输出5
为什么1 |> two_args_fn(2)不可行?
直接写two_args_fn(2)会立即执行函数,但此时仅传入了一个参数,Julia会因缺少第二个参数报错。你需要将其转换为等待接收管道参数的函数,上面的两种方法就是实现这个转换的简洁方案。
内容的提问来源于stack exchange,提问作者Alex Craft
相关产品推荐
相关产品推荐

