Я немного неясен в отношении фразы «символические переменные», поскольку у Юлии есть символ specifictype.
Если переменная указана на значение, тогда ваш вопрос может заключаться в создании массивов, в которых каждый элемент также является указателем на какое-либо значение - это будет массив переменных .
В Julia вы можете создать массив, в котором каждый элемент является указателем на переменную (указатель на указатель на значение). Это будет массив символов. (Если мое мнение об этом неверно, кто-то, пожалуйста, поправьте меня.)
Существует не одна функция для создания массива символов, но для вашего примера (одиночный префикс, квадратная матрица) это довольно просто.
- Создать массив строки префиксы
- Создать массив индексов элементов строки
- Concatenate префикс и индексы
- преобразования строк символов
function SymArray(N)
A = Array{Symbol}(N,N) # initialize output array
prefixes = fill("x", (N,N)) # create array of prefixes
rix = collect(1:N) # create column of numeric row indices
for i in collect(1:N)
tmpCol = string.(rix, i) # add column indices; 'dot' applies string() to each element
A[:,i] = tmpCol # add fully indexed column to output array
end
A = Symbol.(prefixes, A) # concatenate & convert strings to symbols
return(A)
end
julia> S = SymArray(3)
3×3 Array{Symbol,2}:
:x11 :x12 :x13
:x21 :x22 :x23
:x31 :x32 :x33
julia> S[1,1]
:x11
Однако мы не определили x11, поэтому он не указывает ни на что.
julia> eval(S[1,1])
ERROR: UndefVarError: x11 not defined
in eval(::Module, ::Any) at ./boot.jl:234
in eval(::Any) at ./boot.jl:233
Каждый раз, когда вы сохраняете значение в имени переменной, вы можете получить доступ к значению из массива символов.
julia> x11 = 1.2
1.2
julia> eval(S[1,1])
1.2
julia> 3*eval(S[1])
3.6
Это может быть интересный способ для создания таблицы поиска.
Если любой из этих ответов разрешил вашу проблему, вы должны принять один из них. –