【发布时间】:2011-02-15 16:19:06
【问题描述】:
我想在 ruby 中做这样的事情:
safe_variable = begin
potentially_nil_variable.foo
rescue
some_other_safe_value
end
... 并将异常块(开始/救援/结束)视为函数/块。这不像写的那样工作,但有没有办法得到类似的结果?
注意我实际上在做的是这个,它有效但 IMO 丑陋:
begin
safe_variable = potentially_nil_variable.foo
rescue
safe_variable = some_other_safe_value
end
更新
我想我在 ruby 语法上遇到了一个极端情况。我实际上在做的是这样的:
object_safe = begin potentially_nil_variable.foo
rescue ""
end
错误是class or module required for rescue clause。可能它认为""应该是异常结果的占位符。
【问题讨论】:
-
您的第一个示例实际上应该按照书面形式运行 - 您遇到什么错误?
-
奇怪的是,功能版本似乎没有出现在 ruby 文档的任何地方。
标签: ruby exception functional-programming