Struct.new([name,] member ... )
生成并返回一个名为name的Struct 类的子类。子类中定义了访问结构体成员的方法。例如:
dog = Struct.new("Dog", :name, :age)
fred = dog.new("fred", 5)
fred.age=6
printf "name:%s age:%d", fred.name, fred.age
会输出"name:fred age:6"。
结构体名name将成为Struct的类常数名,所以必须以大写字母开始。member可以是Symbol或字符串。
若第一参数为字符串的话,它将被当作类名来处理,因此会出现下列错误。所以最好使用Symbol来指定结构体成员。
p Struct.new('foo', 'bar')
# => -:1:in `new': identifier foo needs to be constant (NameError)
若省略name(第一参数为Symbol)时,就会生成无名的结构体类。当首次要求无名类提供其类名时,它会搜索被赋值的常数名,若找到的话就以该常数名为类名(请参考Class.new)。
欢迎光临 Project1 (https://rpg.blue/) | Powered by Discuz! X3.1 |