Ruby类使用attr_accessor和initialize方法

时间:2012-07-27 20:41:16

标签: ruby

努力在Ruby中创建一个小命令行脚本 用户提供与餐馆相关的一些信息,以及 返回计算信息。

目前我有以下代码:

class Restaurant
 attr_accessor :name :type :avg_price
 def initialize(name, type, avg_price)
   @name = name
   @type = type
   @avg_price = price
 end
 end

问题1

如果我们使用attr_accessors方法声明typepricename 为什么必须使用Initialize方法?这是因为我们需要设置 输入它的值?

问题2

代码中有一个名为RestaurantList的子类,后跟< Array。这是什么功能?

代码中没有定义Array类?它是一个名为Array的红宝石内置类吗?如果是这样,它到底是做什么的?

1 个答案:

答案 0 :(得分:5)

问题1

attr_accessor方法是宣布可在外部访问的变量的捷径 在方法中阻止。

ruby​​中的initializer方法是有人初始化时要调用的方法 该类的东西,即chipotle = Restaurant.new 'Chipotle', 'Mexican', 8.00

问题2

Array确实是Ruby内置的一个类(内置类通常称为Ruby标准库,有关Array类的MRI 1.9.3文档,请参阅here为了使用Array类,你不需要做任何类型的特殊继承。语言是在一个庄园中定义的,比如字符串,哈希,数组和其他常用的类没有需要继承。

那说,这些都可以超载。当你发现看起来像阵列但具有替代功能的那一天时,不要感到惊讶。

其他注释

当你接近Ruby编程时要记住的一件事是所有都是一个对象。您经常会听到这个,但是在您第一次潜水时很难理解,但仍然需要记住所有可以映射回Ruby中的Object类,请参阅{{3} }有关Object类的文档。