gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 15:47:58 24 4
gpt4 key购买 nike

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

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com