wxPerl и его документация немного хакатон. Например, многие пакеты определены только в компонентах XS библиотеки, поэтому отлаживать их практически невозможно. (Вот почему ваш объект Wx::Point
является скалярной ссылкой, скалярное значение - всего лишь дескриптор данных объекта.)
Я охотился и не смог найти кусок документации, который я помню откуда-то, что объясняет, что WxPerl обращается к обоим атрибуты и методы таким же образом, методом вызова Perl
Если вы посмотрите на wxPoint
Class Reference, вы увидите, что есть три конструктора: один без параметров, который возвращает точку в [0,0], которая принимает x и y и конструктор копирования, который принимает существующий объект wxPoint
и использует его координаты. Последний из них не работает в wxPerl. Есть много подобных странностей, которые вы должны обнаружить для себя, потому что документация ужасна
Подобным образом различные «операторы» не имеют отношения к wxPerl. Они могли бы работать, если оператор был перегружен, но wxPerl построен для скорости, поэтому он был отброшен.
Как и другие, описанные два атрибута x
и y
должны быть доступны как вызовы методов. (То же самое относится и к атрибутам всех других классов в wxPerl.)
Таким образом, вы можете написать
my $x = $p->x;
my $y = $p->y;
Или, если вы хотите, чтобы получить фанки
my ($x, $y) = map { $p->$_ } qw/ x y /;
Это только предположение, но это работает: 'my $ p = $ f-> GetPosition(); $ Р-> х(); $ p-> y(); ' – stevieb
Точно! Спасибо – stepan
Теперь я ответил, что вы подтвердили его работоспособность. – stevieb