练习在 Ruby 中定义类和方法

  • 本文关键字:方法 定义 Ruby 练习 ruby
  • 更新时间 :
  • 英文 :


当我在编译器上运行以下关于方法和类的 Ruby 代码时,我遇到以下错误"第 46 行:main:Object 的未定义局部变量或方法'app1'(NameError)"。提前感谢:D!!

class Apps
    def initialize(name)
        @name = name
    end
    def add_app
       "#{name} has been added to the App Center.Approval is pending!!"
    end
    def app_approved
       "#{name} has been approved by the App Center"
    end
    def app_posted
       "Congratulations!!!!#{name} has been posted to the App Store."
    end
end
class Fbapps
    def initialize(name)
        @name = name
        @apps = []
    end
    def add_new(a_app)
       @apps << a_app
       "#{@app} has been added to the #{@apps} store!!"
    end
    def weekly_release
       @apps.each do |app|
       puts @app
       end
       @apps.each do |app|
       app.add_app
       app.app_approved
       app.app_posted
       end
    end
end
apps = ["Bitstrip", "Candy Crush" , "Instapaper"]
apps = Fbapps.new("Apps")
apps.add_new(app1)
apps.add_new(app2)
apps.add_new(app3)
puts apps.weekly_release
app1 = Apps.new("Bitstrip")
app2 = Apps.new("Candy Crush")
app3 = Apps.new("Instapaper")
您需要

先创建app1app2app3,然后再将它们添加到apps

apps = ["Bitstrip", "Candy Crush" , "Instapaper"]
app1 = Apps.new("Bitstrip")
app2 = Apps.new("Candy Crush")
app3 = Apps.new("Instapaper")
apps = Fbapps.new("Apps")
apps.add_new(app1)
apps.add_new(app2)
apps.add_new(app3)
puts apps.weekly_release

如前所述,您的类中还有其他错误,但鉴于如上所述更改执行顺序,修复它们应该相对微不足道。

更新:以下是更新的代码以修复大多数错误:

class Apps
  attr_accessor :name
  def initialize(name)
    @name = name
  end
  def add_app
    "#{name} has been added to the App Center.Approval is pending!!"
  end
  def app_approved
    "#{name} has been approved by the App Center"
  end
  def app_posted
    "Congratulations!!!!  #{name} has been posted to the App Store."
  end
end
class Fbapps
  attr_accessor :name
  def initialize(name)
    @name = name
    @apps = []
  end
  def add_new(a_app)
    @apps << a_app
    "#{a_app.name} has been added to the #{self.name} store!!"
  end
  def weekly_release
    @apps.each do |app|
      puts app.name
    end
    @apps.each do |app|
      puts app.add_app
      puts app.app_approved
      puts app.app_posted
    end
  end
end

您正在尝试在定义app1之前执行apps.add_new(app1)。那条线需要app1 = Apps.new("Bitstrap").

最新更新