gpt4 book ai didi

ruby-on-rails - ruby 中的类后代语法

转载 作者:数据小太阳 更新时间:2023-10-29 08:31:14 24 4
gpt4 key购买 nike

我正在 codeschool 上“ruby bits”类(class),开始有点讨厌它了。作业需要的知识在他们的简短讲座中没有涵盖,这迫使我去谷歌搜索。有时我什至不知道所需的搜索词。谁能帮助我理解下面代码中发生的事情?

class InvalidGameError < StandardError; end

def new_game(name, options={})
raise InvalidGameError, "You must provide a name for this game." unless name
{
name: name,
year: options[:year],
system: options[:system]
}
end

begin
game = new_game(nil)
rescue InvalidGameError => e
puts "There was a problem creating your new game: #{e.message}"
end

我不太明白第一行发生了什么。还有为什么需要 begin 语句?第四行还不够吗?

最佳答案

第一行相当于

class InvalidGameError < StandardError
end

这是定义新异常的常见 Ruby 方式。在这种情况下,您定义一个 InvalidGameError继承自 StandardError 的异常.

begin/rescue/end block 是 Ruby exception handling mechanism .

如果有InvalidGameError将在 begin/rescue 之间的代码执行期间引发,Ruby 将执行 rescue 之后的任何代码.

begin
# do something
rescue StandardError
# do something if the error occurs
end

关于ruby-on-rails - ruby 中的类后代语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32684086/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com