gpt4 book ai didi

ruby-on-rails - 基本 ruby 。为什么这个方法返回零?

转载 作者:太空宇宙 更新时间:2023-11-03 17:20:12 25 4
gpt4 key购买 nike

您好!

我期待 #<PrettyThing:0x0055a958175348 @success="anything here">

但我得到了 'anything here'反而。知道为什么吗?

class Thing
attr_accessor :success

def execute
self.success = execute!
rescue
self.success = false
ensure
self
end
end

class PrettyThing < Thing
def execute!
'anything here'
end
end

p PrettyThing.new.execute # => 'anything here'

最佳答案

确保是一件棘手的事情。通常,它不返回值,而是返回主 block 或救援 block 的最后执行行的返回值,除非有 Uncaught Error ,然后返回错误。但是,如果您显式返回,那么您将获得返回值。不过,这有点不标准且令人困惑,因为 ensure 子句的目的是进行静默清理。最好将返回值移到 begin/rescue block 之外。

关于ruby-on-rails - 基本 ruby 。为什么这个方法返回零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51201629/

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