在Julia中,x \ y = 1的赋值是什么意思?

问题描述 投票:1回答:1

在尝试使用Julia 1.0时,我注意到我可以做这样的事情:

x\y = 1

然后REPL显示:

\ (generic function with 1 method)

这意味着它是一个有效的任务(口译员不会抱怨)。然而,xyx\y都未定义。

这种表达的含义是什么?

julia
1个回答
8
投票

这是一个新的函数定义,(种类)在\中影响左分割算子Base,因为左分割算子已经为Julia中的某些类型定义了。新函数定义是\(x,y) = 1(函数参数的名称无关紧要),适用于所有类型的变量。这将阻止julia因名称冲突而加载Base.\。无论输入是什么,你的新\都会返回相同的值。

julia> x\y = 5

julia> a = 3; b = 4;
julia> a\b
5
julia> c = "Lorem ipsum"; d = "dolor";
julia> c\d
5

如果你已经使用了\中定义的Base,你的重新定义会抛出一个错误,说扩展Base.\需要使用import Base.\进行显式导入。然而,在\之后定义import Base.\的行为将会有所不同。它将扩展运营商Base.\

julia> 1\[1,3]
2-element Array{Float64,1}:
 1.0
 3.0

julia> import Base.\

julia> x\y=3
\ (generic function with 152 methods)

julia> 1\[1,3]
2-element Array{Int64,1}:
 3
 3
© www.soinside.com 2019 - 2024. All rights reserved.