为什么';这个Ruby代码不能工作吗?

为什么';这个Ruby代码不能工作吗?,ruby,Ruby,我是编程新手,我决定学习ruby。我刚刚开始,所以我仍在努力理解ruby的许多概念和想法。嗯,我试图用我从第一节课学到的东西创建我自己的程序,所以我写了这个小程序 class Car def say_brand(aBrand) @thebrand=aBrand end def get_brand return @thebrand end def say_year(aYear) @theyear=aYear end def get_year

我是编程新手,我决定学习ruby。我刚刚开始,所以我仍在努力理解ruby的许多概念和想法。嗯,我试图用我从第一节课学到的东西创建我自己的程序,所以我写了这个小程序

class Car
  def say_brand(aBrand)
    @thebrand=aBrand
  end

  def get_brand
    return @thebrand
  end

  def say_year(aYear)
    @theyear=aYear
  end

  def get_year
    return @theyear
  end

  def say_model(aModel)
    @themodel=aModel
  end

  def get_model
    return @themodel
  end
end

firstcar.say_brand(Toyota)
puts(firstcar.get_brand)
firstcar.say_year(1997)
puts(firstcar.get_year)
firstcar.say_model(Corolla)
puts(firstcar.get_model)

secondcar.say_brand(Subaru)
puts(secondcar.get_brand)
secondcar.say_year(2005)
puts(secondcar.get_year)
secondcar.say_model(Impressa)
puts(secondcar.get_model)

thirdcar.say_brand(Ford)
puts(thirdcar.get_brand)
thirdcar.say_year(2013)
puts(thirdcar.get_year)
thirdcar.say_model(Explorer)
puts(thirdcar.get_model)
当我在计算机的命令行上运行它时,会显示:

cars.rb:45:syntax error,unexpected $end,expecting keyword_end
(eval):569: (eval):569: compile error (SyntaxError)
(eval):569: syntax error, unexpected $end, expecting kEND
当我在codecademy labs editor for Ruby中运行它时,会显示:

cars.rb:45:syntax error,unexpected $end,expecting keyword_end
(eval):569: (eval):569: compile error (SyntaxError)
(eval):569: syntax error, unexpected $end, expecting kEND
我希望程序显示类似的内容:

-Toyota -1997 -Corolla -Subaru -2005 -Impressa -Ford -2013 -Explorer -丰田 -1997 -花冠 -斯巴鲁 -2005 -Impressa -福特 -2013 -探险家
如果有人能告诉我我的代码有什么问题,我将不胜感激,这样我就可以继续学习编程。

使用
irb
。键入命令行
irb
,将打开一个交互式Ruby shell。在其中,逐个输入您的行。我发现你的类定义没有错。如果您一行一行地输入代码并查看输出,您将看到哪一行有语法错误。

错误消息表示程序结束时仍有一个块打开,该块应以
结束
关闭。代码的适当缩进应该使这些错误变得明显

除此之外,发布的代码不会创建对象
firstcar
secondcar
thirdcar
(例如,使用
firstcar=Car.new
)。品牌名称和车型(例如,
Toyota
)看起来也像是您想要的字符串-如果是这样,它们缺少引号(例如,
“Toyota”
)。(如果您希望它们是类或对象,则发布的代码不会显示它们的定义。)


get.*
say.*
(你的意思是
set
?)访问器也不是很好的Ruby风格,尽管本质上不是错误的。阅读Ruby中的访问器。

什么是“不工作”的?您的期望是什么?这与您观察到的有什么不同?如果您不愿意告诉我们此代码如何工作,我们也不愿意尝试找出它可能有什么问题。错误消息?你怎么称呼它。缺少
end
(缩进代码,您将看到它)。2.未初始化的
firstcar
secondcar
(添加
firstcar=Car.new
)。3.
Toyota
Corolla
等缺少引号。您的代码没有显示初始化的
firstcar
secondcar
thirdcar
的位置,也没有定义
Toyota
Corolla
Subaru
Impressa
Ford
Explorer
。您可能需要类似于
firstcar=Car.new
firstcar.say_brand('Toyota')
firstcar.say_model('Corolla')