Что значит назначение как x \ y = 1 для Юлии? - PullRequest
0 голосов
/ 04 сентября 2018

Экспериментируя с Julia 1.0, я заметил, что могу сделать что-то вроде этого:

x\y = 1

Затем REPL показывает:

\ (generic function with 1 method)

, что означает его действительное назначение (переводчик не жалуется). Однако x, y и x\y все остаются неопределенными.

Что означает такое выражение?

1 Ответ

0 голосов
/ 04 сентября 2018

Это новая функция определение , которая (вид) затеняет левый оператор деления \ в 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
...