function - Julia -如何将kwargs从函数传递到宏

标签 function arguments julia

您可以定义一个函数,将其关键字参数传递给内部函数,如下所示:

function example(data;xcol,ycol,kwargs...)
    DoSomething(; spec=:EX, x=xcol, y=ycol, kwargs...)
end
现在,函数DoSomething接受许多参数,例如color。这适用于函数,但是我想使用VegaLite.jl中的宏来做到这一点:
function example(data;xcol,ycol,kwargs...)
    @vlplot(data=data,mark=:point, x=xcol, y=ycol,kwargs...)
end
example(df,xcol=:Miles_per_Gallon, ycol=:Horsepower, color=:Origin)
请注意,上面的代码不起作用。

最佳答案

所以这里的答案是……很棘手。实际上,通常,除非宏本身支持它,否则这是不可能的。
看到,宏在解析时进行转换-经常会利用您实际编写的内容来表示不同而又特殊的含义。例如,@vlplot将专门处理并支持类似JSON的{}语法。这些不是有效的Julia代码,无法传递给您定义的函数(例如example)!
现在,很容易看到这一点并想,好吧,让我们也将外部example的东西变成一个宏!但这不是那么容易。我不确定是否有一个总的答案会始终正确地传递论点并确保卫生正确。我很确定您需要了解有关所调用的宏如何处理其参数的知识。

关于function - Julia -如何将kwargs从函数传递到宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64758052/

相关文章:

python - Python中自定义命令行解析

dataframe - 重命名 Dataframe 列名称 julia v1.0

julia - Julia using 对丢失的包有何表现?

php - 如何在函数中使用无限参数(如 PHP isset())

javascript - jQuery:将 $this 与其他参数一起传递给函数

JavaScript 不会更新文件

用于调用函数的 Python 管道符

javascript - 所有参数的总和(有些参数是数组);总和( [1,2,3,4], 50, 10, [10, 20],1 )

jquery - 如果 jQuery 中的 url 包含 "x"如何执行函数

julia - 在 JULIA 中转换数组中的元组向量