gpt4 book ai didi

julia - 我可以在 Julia 中使用 <- 而不是 = 吗?

转载 作者:行者123 更新时间:2023-12-05 08:41:48 26 4
gpt4 key购买 nike

就像在 R 中一样:

a <- 2

甚至更好

a ← 2

应该翻译成

a = 2

如果可能,尊重方法重载。

最佳答案

= 在 Julia 中被大量重载(不是在多重分派(dispatch)意义上)。

  1. 它绑定(bind)了一个新变量。如 a = 3。在此上下文中,您将无法使用 而不是 =,因为您无法在 Julia 中重载绑定(bind)。

  2. 它被降低到 setindex!。例如,a[i] = b 被降低为 setindex!(a, b, i)。不幸的是,setindex! 接受 3 个变量,而 只能接受 2 个变量。所以你不能用 3 个变量重载 =

    但是,例如,您只能使用 2 个变量并重载 a[:] = b。因此,您可以定义 ←(a,b) = (a[:] = b)←(a,b) = setindex!(a,b,:).

  3. a .= b 被降低为 (Base.broadcast!)(Base.identity, a, b)。您可以通过定义 ←(a,b) = (a .= b)←(a,b) = (Base.broadcast!)(Base.identity, a, b).

因此,有两种使用 的潜在好方法。祝你好运;)

顺便说一句,如果您真的想使用 进行绑定(bind)(如 1. 中所示),唯一的方法就是使用宏。但是,你将不得不在每一个赋值前写一个宏,这看起来不太好。

此外,如果您想探索运算符在 Julia 中是如何降低的,例如,执行 f(a,b) = (a .= b),然后执行 @code_lowered f (x,y).

关于julia - 我可以在 Julia 中使用 <- 而不是 = 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47533878/

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