gpt4 book ai didi

macros - 什么是宏@.来自 Julia,文档在哪里?

转载 作者:行者123 更新时间:2023-12-02 18:32:43 25 4
gpt4 key购买 nike

我似乎找不到这个宏@.的定义,或.本身。我知道这是一个元素运算。但是,如何才能将它发挥到极致,对我来说仍然是个 secret 。

例如,JavaScript 有 foreach(i,e){},您可以在其中使用 (i) 索引和 (e) 元素等。

最佳答案

当您不知道如何在 Julia 中执行某些操作时,第一步是输入:?,然后输入您的命令。在这种情况下你会得到:

help?> @.
@. expr

Convert every function call or operator in expr into a "dot call" (e.g. convert f(x) to f.(x)), and convert every assignment in expr to a "dot assignment" (e.g. convert += to .+=).

If you want to avoid adding dots for selected function calls in expr, splice those function calls in with $. For example, @. sqrt(abs($sort(x))) is equivalent to sqrt.(abs.(sort(x))) (no dot for sort).

(@. is equivalent to a call to @__dot__.)

Examples
≡≡≡≡≡≡≡≡≡≡

julia> x = 1.0:3.0; y = similar(x);

julia> @. y = x + 3 * sin(x)
3-element Vector{Float64}:
3.5244129544236893
4.727892280477045
3.4233600241796016

由于这是一个宏,有时使用@macroexpand更容易理解:

julia> @macroexpand  @. y = x + 3 * sin(x)
:(y .= (+).(x, (*).(3, sin.(x))))

虽然这是使用运算符的函数表示(波兰语表示法)(即 a+b 写为 +(a,b)) - 否则它是非常清楚发生了什么!只需在各处添加一个点,现在您的代码就已矢量化。

关于macros - 什么是宏@.来自 Julia,文档在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69225571/

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