Julia中的“at”@符号是什么意思?
例如,这里:
ys = lift(frequency, phase) do fr, ph
@. 0.3 * sin(fr * xs - ph)
end
从这里。
我未能将其解释为宏定义或调用。
回答
TLDR:@调用宏。https://docs.julialang.org/en/v1/manual/metaprogramming/
在我看来,julia 最好的功能之一是它的宏。它们允许您轻松编写操作源代码的函数。@.例如变成0.3 * sin(fr * xs - ph)为 0.3 .* sin(fr .* xs - ph)。另一个常见的例子是@time粗略地将相同的表达式翻译成
t1=time()
0.3 * sin(fr * xs - ph)
println(time()-t1)
请注意,这些都不是由函数实现的,因为函数在运行之前会对其输入进行评估,而宏则对代码本身进行操作。