Това, което искам да направя, но не работи: Списък с int...
BebossArray=[0 for i in xrange(1024)]
Моите битови функции (има всички обичайни набор, изчистване, превключване, тест, но тук е зададено)
def setBit(dint, offset):
mask = 1 << offset
dint=(dint|mask)
return
така че бих искал да задам малко в едно от целите в списъка...
setBit(DebossArray[index],3)
Това, разбира се, не работи. Присвояването в setBit просто създава нов обект и DebossArray[index] остава поставен както се очаква. Така че разбирам, че INT са неизменни, така че не мога да направя промяна на място.
Какво направих... (не ми харесва, но работи за моите цели)
DebossArray=[ctypes.c_int32() for x in xrange(1024)]
и
def setBit(dint, offset):
mask = 1 << offset
dint.value=(dint.value|mask)
return
така че сега
setBit(DebossArray[index],3]
работи според очакванията, защото ctype.c_int32() Е променлив, така че мога да го променя на място.
Използвам 2.7, но преминаването до 3 вероятно ще се случи по-късно в проекта. Също така се опитвам да стоя далеч от
DebossArray[index]=setBit(DebossArray[index],3)
тип конструкция.
Повече подробности: На някои места имам DebossArray[x], а на други места имам ButtonArray[x][y]
И сега към точката; Какъв е правилният начин да направите това?