【问题标题】:Ruby class using attr_accessor and initialize method使用 attr_accessor 和初始化方法的 Ruby 类
【发布时间】:2012-07-27 20:41:16
【问题描述】:

致力于在 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 的ruby 内置类吗?如果是这样,它的具体作用是什么?

【问题讨论】:

    标签: ruby


    【解决方案1】:

    问题 1

    attr_accessor 方法是声明变量可在 在方法内阻塞。

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

    问题 2

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

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

    其他说明

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

    【讨论】:

    • 非常感谢,现在很清楚了。你花了多长时间自学用 ruby​​ 编程?谢谢。
    • @user1556385 我花了大约 4 个月的时间来学习 Ruby,为了更深入地了解一下,我花了大约一个月的时间来学习 php。我显然还没有像我想要的那样掌握它(特别是有效利用 Ruby 元编程的能力),但请记住每个人都以自己的速度学习。我谈论过学习 Ruby 的大多数人都描述了“它刚刚成功”的那一天,坚持下去,继续在堆栈上发帖(这里的社区真的很棒!)总有一天它会成功!
    • 非常感谢你照亮了我的一天,我是一个聪明的学生,很久以前在 2005 年使用 C 语言做得很好,当我观看 Lynda.com 时,使用 ruby​​ 对我来说就像 PHP培训班。来自乌克兰的一个人给我写了一个简单而实用的类脚本,在命令行上添加餐厅、类型和价格,然后在屏幕上打印列表,很清楚 OOP 的概念以及如何使用该方法进行操作和操作开始当他编写循环执行语句时。使用 Lynda.com dvd,我很困惑唯一的区别是 lynda 脚本使用 txt 文件存储它的家伙代码与搜索
    • 我做到了,但它说我没有声誉或其他东西,一旦我达到那个级别,我会确保我做到这一点。在你注意到之前我已经尝试过了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-10
    • 2020-12-15
    • 2020-07-19
    相关资源
    最近更新 更多