Вопрос

Это часть библиотеки-оболочки plt-схемы:

(define InputMask

  (_bitmask '(NoEventMask =            #x00000000

            KeyPressMask =             #x00000001

            KeyReleaseMask =           #x00000002

            ...

            OwnerGrabButtonMask =      #x01000000)

      _long))

Дело в том, что я не могу понять, как получить доступ к полям в битовой маске (или перечислении, если на то пошло).Как я могу получить, например, значение KeyPressMask?

Это было полезно?

Решение

Вы не знаете.Добавить ctypes легко:Чтобы создать новый ctype, вам нужно предоставить существующий ctype для его дальнейшего развития и две функции — одну для перевода чего-либо в существующий тип, а другую для перевода в другую сторону.

Сейчас _bitmask type делает именно это — он основывается на _int (но в вашем случае он включен _long), а две функции перевода преобразуют список символов в целое число, а целое число в список символов.При использовании такого типа вам не нужно знать значение KeyPressMask -- ты просто знаешь, что можешь пройти '(KeyPressMask) как InputMask ввод во внешнюю функцию, и он будет преобразован в соответствующее число;и вы также знаете, что когда вы получаете значение результата от функции, у которой есть InputMask вывод, то это будет список символов, которые могут содержать KeyPressMask.Суть в том, что на стороне схемы вы не имеете дело с числами, а только со списками символов.

Если вы делать вам нужен доступ к этим значениям по какой-то неясной причине, тогда вы можете создать свой собственный ctype каким-то другим способом - используя make-ctype (как я описал выше) должно быть очень легко.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top