代码之家  ›  专栏  ›  技术社区  ›  Amade

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

  •  1
  • Amade  · 技术社区  · 6 年前

    在试验Julia 1.0时,我注意到我可以这样做:

    x\y = 1

    然后repl显示:

    \ (generic function with 1 method)

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

    这种表达的意思是什么?

    1 回复  |  直到 6 年前
        1
  •  8
  •   hckr    6 年前

    这是一个新功能 定义 那(有点像)左除法运算符的阴影 \ 在里面 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
    

    如果您已经使用 \ 定义见 基地 ,您的重新定义将引发一个错误,说明扩展 基地。 需要显式导入 import 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