Может ли переменная иметь несколько значений

В алгебре, если я сделаю выражение x + y = 3, переменные, которые я использовал, будут содержать значения либо 2 и 1, либо 1 и 2. Я знаю, что присваивание в программировании - это не одно и то же, но мне стало интересно. Если бы я хотел представить значение, скажем, квантово странной частицы, я бы хотел, чтобы моя переменная имела два значения одновременно и чтобы она разрешалась в одно или другое позже. А может я просто мечтаю?

Можно ли сказать что-то вроде i = 3 or 2;?

фактически, в этом утверждении x и y могут быть почти любыми! Например, x = -3, y = 6; х = 0, у = 3; x = 4, y = -1 и т. д.

Jason Coco 20.11.2008 10:50

Ха, да! Ну, я почти ничего не знаю ни о какой математической фигне, которую вы видите ... Так что иногда я путаю свою правду с моей ложью! Спасибо хоть!

Ziggy 20.11.2008 11:12
Переменные, типы данных и операторы в Python
Переменные, типы данных и операторы в Python
В Python переменные используются как место для хранения значений. Пример переменной формы:
2
2
9 233
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

Вы можете использовать структуру и обрабатывать операции вручную. В противном случае ни одна переменная не может иметь только 1 значение за раз.

Ответ принят как подходящий

Вы не можете сделать это с собственными типами, но ничто не мешает вам создать переменный объект (при условии, что вы используете объектно-ориентированный язык), который имеет диапазон значений или даже функцию плотности вероятности, а не фактическое значение.

Вам также потребуется определить все математические операторы между вашими переменными и вашими переменными и собственными скалярами. То же самое и с операторами равенства и присваивания.

массивы numpy делают нечто подобное для векторов и матриц.

Я не уверен, почему вы сделали комментарий об использовании объектно-ориентированного языка. Можно было бы создать библиотеку практически на любом языке для обработки неопределенных типов переменных.

Trent 04.03.2009 01:56

Переменная - это не что иное, как адрес в памяти. Это означает, что переменная описывает ровно одно место в памяти (длина зависит от типа). Итак, пока у нас нет «квантовой памяти» (и у нас ее нет, и не похоже, что она будет у нас в ближайшем будущем), ответ - НЕТ. Если вы хотите запрограммировать и смоделировать это поведение, вы можете использовать массив (с длиной, равной количеству макс. Множественных значений). С этим увеличивается время выполнения, поэтому вычисления должны выполняться для каждого из значений (например, x + y, должны вычисляться с двумя разными значениями x1 + y1, x2 + y2, x1 + y2 и x2 + y1).

В Perl это возможно. Если вы используете Скаляр :: Утилита, вы можете сделать так, чтобы переменная принимала 2 значения. Один, если он используется в строковом контексте, а другой, если он используется в числовом контексте.

Кажется, вы спрашиваете, как реализовать систему Нечеткая логика. Они существуют уже некоторое время, и вы, несомненно, можете легко подобрать библиотеку для распространенных языков программирования.

Дэмиен Конвейс Quantum :: Суперпозиции могут делать то, что вы хотите,

https://metacpan.org/pod/Quantum::Superpositions

Однако вам может понадобиться ваша трубка для крэка.

ха-ха-ха, это то, о чем я говорю.

Ziggy 20.11.2008 11:10

Это одна из функций, запланированных для Perl 6 (переходы), с синтаксисом, который должен выглядеть как my $a = 1|2|3;

Если когда-нибудь будет реализован, он будет работать интуитивно, как будто $a==1 будет истинным одновременно с $a==2. Также, например, $a+1 даст вам значение 2|3|4.

Эта функция фактически доступна в Perl5, а также через модули Perl6 :: Соединение и Quantum :: Суперпозиции, но без синтаксического сахара (через «функции» all и any).

По крайней мере, для сравнения (b < any(1,2,3)) он также был доступен на экспериментальном языке Microsoft , однако нигде не был задокументирован (я просто попробовал его, когда смотрел на Cω, и он просто работал).

сладкий! Это ... Перл, она неплохо звучит.

Ziggy 20.11.2008 11:11

(1 | 2 | 3) + 1 = (1 + 1 | 2 + 1 | 3 + 1) = (2 | 4 | 5)? Я думаю, у вас там ошибка. : o)

Michael Madsen 20.11.2008 11:14

Это то же самое, что вы можете делать в Prolog. Вы определяете правила, которые ограничивают ваши переменные, а затем позволяете Prolog разрешить их ...

Чтобы привыкнуть к нему, нужно время, но он отлично подходит для определенных проблем, если вы знаете, как его использовать ...

Другие вопросы по теме