4

努力在 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方法来声明type, 和price,name 为什么需要 Initialize 方法?这是因为我们需要为它设置输入的值吗?

问题2

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

Array 类没有在代码中定义?它是 ruby​​ 中的内置类Array吗?如果是这样,它的具体作用是什么?

4

1 回答 1

5

问题 1

attr_accessor方法是在方法内的块外声明可访问变量的捷径。

ruby 中的initializer方法是当有人初始化该类的某些内容时要调用的方法,即chipotle = Restaurant.new 'Chipotle', 'Mexican', 8.00

问题2

Array确实是一个内置于 Ruby 中的类,(内置类通常被称为 Ruby 标准库,有关该类的 MRI 1.9.3 文档请参见此处Array。您无需进行任何特殊继承即可使用Array语言是在庄园中定义的,因此不需要继承诸如字符串、哈希、数组和其他常用类之类的东西。

也就是说,这些可以超载。当您发现一些看起来像数组但具有替代功能的东西时,不要感到惊讶。

其他注意事项

使用 Ruby 编程时要记住的一件事是,一切都是对象。你会经常听到这个,但当你第一次潜水时很难理解,但仍然重要的是要记住,一切都可以映射回ObjectRuby 中的类,请参阅此处以获取有关该类的文档Object

于 2012-07-27T21:04:03.827 回答