options.fetch。 我不明白
看看这个post的讨论。 我无法理解如何使用块来获取是一个更好的解决方案。
在Rails票证#4558的第一个补丁中 :
options.fetch(:alt, File.basename(src, '.*').capitalize)
该行执行basename和capitalize函数,然后将结果传递给Hash#fetch
而不管选项哈希中是否存在:alt值。
在更新的补丁中 :
options.fetch(:alt) { File.basename(src, '.*').capitalize }
只有在Hash#fetch
需要默认值时才会执行相同的basename / capitalize代码(即当选项哈希中不存在:alt键时)。 这意味着如果不需要,可以跳过(可能很昂贵的)默认值的计算。
有关更多详细信息,请参阅有关Hash#fetch
的文档。
我不知道是什么鸭子冲击Rails已经对Hash#fetch
做了什么,但是使用Plain Old Ruby Objects,我使用它而不是Hash#[]
因为当我要求某些东西并且它不可用时,我想知道它。 这被称为“早期失败”(或语用程序员 提示列表中的 “早期崩溃”)