在尝试使用Julia 1.0时,我注意到我可以做这样的事情:
x\y = 1
然后REPL显示:
\ (generic function with 1 method)
表示有效分配(口译员没有抱怨)。但是,x
,y
和x\y
都未定义。
这种表达是什么意思?
答案 0 :(得分:8)
这是一个新功能 definition (定义),它(种类)在\
中遮盖了左除法运算符Base
,因为已经为其中的某些类型定义了左除法运算符朱莉娅新的函数定义为\(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