我是编程新手,我决定学习红宝石。我刚刚开始,所以我仍然试图了解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
当我在Ruby的codecademy labs编辑器中运行它时,会出现:
(eval):569: (eval):569: compile error (SyntaxError)
(eval):569: syntax error, unexpected $end, expecting kEND
我期待该程序显示类似于此的内容:
-Toyota -1997 -Corolla -Subaru -2005 -Impressa -Ford -2013 -Explorer
如果有人能告诉我我的代码有什么问题,我真的很感激,这样我就可以继续学习编程了。
答案 0 :(得分:1)
错误消息表示程序结束时仍然打开了一个应该用end
关闭的程序段。正确缩进代码应该使这些错误显而易见。
除此之外,发布的代码不会创建对象firstcar
,secondcar
或thirdcar
(例如,使用firstcar = Car.new
)。品牌名称和汽车模型(例如,Toyota
)看起来也像是打算将它们作为字符串 - 如果是这样,它们就会丢失引号(例如'Toyota'
)。 (如果您打算将它们作为类或对象,则发布的代码不会显示其定义。)
get_*
和say_*
(你的意思是set
?)访问者也不是很好的Ruby风格,虽然不是天生就错了。阅读Ruby中的访问器。
答案 1 :(得分:0)
使用irb
。键入命令行irb
,将打开一个交互式Ruby shell。在其中,逐个输入您的行。我发现你的班级定义没有错。如果逐个输入行并观察输出,您将看到哪一行有语法错误。