有没有办法从 Crystal 类获取任何变量?

问题描述 投票:0回答:1

在具有一些实例变量的 Crystal 类中:

class Coordinate
    def initialize(x : Int32, y : Int32)
        @x = x
        @y = y
    end
end

为了访问所述变量,您需要编写如下方法:

...
    def x
        @x
    end

在本例中这很好,但如果您需要访问大量变量,则可能会非常乏味且耗时。有没有一种方法可以通用地访问类的任何变量?

我确实想过尝试找到与 ruby 类似的

eval()
,但由于 Crystal 是编译的,所以显然没有太多可以使用的。

理想的解决方案应该是这样的:

...
    def get(var)
        @var
    end
class crystal-lang
1个回答
0
投票

Crystal 标准库提供了简化 getter 和 setter 方法定义的宏

使用

property
进行读/写访问,或使用
getter
进行只读访问:

class Coordinate
    property x
    getter y

    def initialize(x : Int32, y : Int32)
        @x = x
        @y = y
    end
end

point = Coordinate.new 10, 20

point.x = 30

puts point.x
puts point.y
30
20
© www.soinside.com 2019 - 2024. All rights reserved.