foo = ''
begin
foo = 'hi there'
rescue
end
puts foo
如果我在开始之前不关心 foo = '' 在顶部它仍然有效。但我看到很多人这样做。而且感觉更好。但这是最佳实践吗?
这部分是偏执狂,部分是清晰。在这个微不足道的例子中,不太可能有问题,但是如果你有这个呢?
begin
foo = complicated_method_call(with: lots_of_arguments, and: another_call(with: args))
rescue
end
一大堆东西可能会出错,如果是这样的话,你最终会foo
被nil
.
现在,使用盲rescue
通常是不好的形式,理想情况下,您希望将范围缩小到代码可能触发的范围。
请记住,Ruby 变量是在方法级别定义的,方法中的任何实例都会定义它们,但它们的默认值为 nil
,这可能是不希望的。
如您所知,对于 Ruby 来说,只要您为其赋值/对象,变量就会存在,使其成为弱/松散类型(而不是"强类型")语言。为什么?该语言设计者的重点是简单易用 - 请参阅手册:)中的声明。还要记住,如果没有混淆,则无需在方法中编写"return"来返回值,也不需要在调用函数时写括号。为什么?简单,易于使用。很难说这些东西作为一般答案是否更好。我们是否必须始终依赖编译器检查?我们是专业吗?真?但一般来说,我们很难找到Ruby程序员总是声明变量,除非实例/全局变量,最后我们会让自己冲进主流。耶!确定变量类型的一般答案:https://en.wikipedia.org/wiki/Duck_test 玩得开心!