WxPerl,从 wxPoint 对象获取坐标
WxPerl, getting coordinates from wxPoint object
我想解决这个问题。
除了从 WxPoint 对象获取坐标 x 和 y 之外,一切都很好。
我不知道,如何访问此对象的属性 "x"、"y"。例如,wxPython 允许使用“somepoint.x
”,但是 WxPerl 呢? somepoint->{"x"}
不起作用,因为对象是 SCALAR 引用..
谢谢
解决方案是使用($p
是 wxPoint
的实例):
my $p = $f->GetPosition();
$p->x(); $p->y()
以下应该符合您的要求:
my $point = $frame->GetPosition;
my $x = $point->x;
my $y = $point->y;
wxPerl 及其文档有点像编程马拉松。例如,许多包仅在库的 XS 组件中定义,因此几乎无法调试。 (这就是为什么您的 Wx::Point
对象是标量引用;标量值只是对象数据的句柄。)
我已经搜索过但未能找到一大块我记得从某处解释 WxPerl 通过 Perl 方法调用以相同方式访问属性和方法的文档
如果您查看 wxPoint
Class Reference,您会看到有三个构造函数:一个没有参数 returns [0,0] 处的一个点,一个采用 x 和 y 坐标,以及一个接受现有 wxPoint
对象并使用其坐标的复制构造函数。最后一个在 wxPerl 中不起作用。您必须自己发现许多类似的怪事,因为文档令人震惊
同样,各种 "operators" 与 wxPerl 无关。如果运算符过载,它们可以工作,但 wxPerl 是为速度而构建的,所以它被丢弃了
正如其他人所描述的,x
和 y
这两个属性必须作为方法调用来访问。 (这同样适用于 wxPerl 中所有其他 类 的属性。)
所以你可以这样写
my $x = $p->x;
my $y = $p->y;
或者,如果你想变得时髦
my ($x, $y) = map { $p->$_ } qw/ x y /;
我想解决这个问题。
除了从 WxPoint 对象获取坐标 x 和 y 之外,一切都很好。
我不知道,如何访问此对象的属性 "x"、"y"。例如,wxPython 允许使用“somepoint.x
”,但是 WxPerl 呢? somepoint->{"x"}
不起作用,因为对象是 SCALAR 引用..
谢谢
解决方案是使用($p
是 wxPoint
的实例):
my $p = $f->GetPosition();
$p->x(); $p->y()
以下应该符合您的要求:
my $point = $frame->GetPosition;
my $x = $point->x;
my $y = $point->y;
wxPerl 及其文档有点像编程马拉松。例如,许多包仅在库的 XS 组件中定义,因此几乎无法调试。 (这就是为什么您的 Wx::Point
对象是标量引用;标量值只是对象数据的句柄。)
我已经搜索过但未能找到一大块我记得从某处解释 WxPerl 通过 Perl 方法调用以相同方式访问属性和方法的文档
如果您查看 wxPoint
Class Reference,您会看到有三个构造函数:一个没有参数 returns [0,0] 处的一个点,一个采用 x 和 y 坐标,以及一个接受现有 wxPoint
对象并使用其坐标的复制构造函数。最后一个在 wxPerl 中不起作用。您必须自己发现许多类似的怪事,因为文档令人震惊
同样,各种 "operators" 与 wxPerl 无关。如果运算符过载,它们可以工作,但 wxPerl 是为速度而构建的,所以它被丢弃了
正如其他人所描述的,x
和 y
这两个属性必须作为方法调用来访问。 (这同样适用于 wxPerl 中所有其他 类 的属性。)
所以你可以这样写
my $x = $p->x;
my $y = $p->y;
或者,如果你想变得时髦
my ($x, $y) = map { $p->$_ } qw/ x y /;