У меня есть двухэлементный вектор, элементы которого могут быть только 0 или 1. Ради этого примера предположим, что x = [0, 1]
. Предположим также, что есть четыре объекта y00, y01, y10, y11
. Моя цель — обновить соответствующий y
(в данном примере y01
) в соответствии с текущим значением x
.
Я знаю, что могу сделать это, используя серию операторов if
:
if x == [0, 0]
y00 += 1
elseif x == [0, 1]
y01 += 1
elseif x == [1, 0]
y10 += 1
elseif x == [1, 1]
y11 += 1
end
Однако я понимаю, что это можно сделать более кратко, используя метапрограммирование Джулии, хотя Я не знаком с его использованием и не могу понять, как это сделать. Я хочу иметь возможность выразить что-то вроде y{x[1]}{x[2]} += 1
(что явно неправильно); в основном, иметь возможность ссылаться и изменять правильный y
в соответствии с текущим значением x
. До сих пор мне удавалось вызвать фактическое значение правильного y
(но я не могу вызвать сам объект y
) с помощью чего-то вроде
eval(Symbol(string("y", x[1], x[2])))
Извините, если я использовал неподходящий жаргон, но, надеюсь, я ясно выразился.
(i,j)
вместо векторов[i,j]
- person François Févotte   schedule 05.01.2020