就像在 R 中一样:
a <- 2
Run Code Online (Sandbox Code Playgroud)
甚至更好
a ? 2
Run Code Online (Sandbox Code Playgroud)
应该翻译成
a = 2
Run Code Online (Sandbox Code Playgroud)
如果可能,尊重方法重载。
小智 5
= 在 Julia 中重载了很多(不是在多重调度意义上)。
它绑定了一个新变量。如a = 3. 您将无法在此上下文中使用?代替=,因为您无法在 Julia 中重载绑定。
它被降低到setindex!。就像,a[i] = b被降低到setindex!(a, b, i)。不幸的是,setindex!需要 3 个变量而?只能需要 2 个变量。所以你不能=用 3 个变量重载。
但是,例如,您只能使用 2 个变量和重载a[:] = b。因此,您可以定义?(a,b) = (a[:] = b)或?(a,b) = setindex!(a,b,:)。
a .= b降低到(Base.broadcast!)(Base.identity, a, b). 您可以通过定义?(a,b) = (a .= b)或重载它?(a,b) = (Base.broadcast!)(Base.identity, a, b)。
因此,有两种可能不错的使用?. 祝你好运 ;)
顺便说一句,如果你真的想使用?绑定(如 1.),唯一的方法是使用宏。但是,您将不得不在每个作业前编写一个宏,这看起来不太好。
此外,如果您想探索运算符如何在 Julia 中降低f(a,b) = (a .= b),例如,执行 ,然后@code_lowered f(x,y)。