В TI-BASIC, как я могу отобразить имя переменной, учитывая только переменную?
Я создаю функцию, которая отображает много переменных в формате Variable + Variable Name.
Define LibPub out(list)=
Func
Local X
for x,1,dim(list)
list[x]->name // How can I get the variable name here?
Disp name+list[x]
EndFor
Return 1
EndFunc
2 ответа
По заданному значению списка невозможно найти его имя.
Рассмотрим этот пример:
a:={1,2,3,4}
b:=a ; this stores {1,2,3,4} in b
out(b)
Строка 1: сначала значение {1,2,3,4}
создано. Затем переменная с именем a
создан и его значение установлено в {1,2,3,4}
,
Строка 2: выражение a
оценивается; результат {1,2,3,4}
, Новая переменная с именем b
создан, и его значение установлено в `{1,2,3,4}.
Строка 3: выражение b
оценивается. Ссылка на переменную определяет, какое значение хранится в b
, Результат {1,2,3,4}
, Это значение затем передается в функцию out
,
Функция out
получает значение {1,2,3,4}
, Учитывая значение, нет никакого способа узнать, действительно ли значение было сохранено в переменной. Здесь значение хранится в обоих a
а также b
,
Однако мы также можем посмотреть на out({1,1,1,1}+{0,2,3,4})
,
Система оценит {1,1,1,1}+{0,2,3,4}
и получить {1,2,3,4}
, затем out
называется. Значение out
получил результат выражения, но эквивалентное значение хранится в a
а также b
, Это означает, что значения не имеют имени.
В общем: переменные имеют имя и значение. Значения не имеют имен.
Если вам нужно напечатать имя, то посмотрите на строки.
Это будет занимать много памяти, но вы можете сохранить строку имен переменных и разделить каждое имя на некоторое количество символов и получить подстроку на основе индекса переменной в списке, который вы хотите получить. Например, допустим, вы хотите получить доступ к нулевому индексу, затем вы берете подстроку, начинающуюся с (индекс переменной * длина имени переменной, indexofvariable * длина + длина +1). Строка будет выглядеть следующим образом: скажем, у вас есть переменные foo, bas, random, impetus, строка будет храниться примерно так: "foo bas random impetus "