Ruby on rails options.fetch。我不知道';我不明白
请看下面的讨论。我无法理解如何使用块进行提取是一个更好的解决方案。在on: 此行执行basename和大写函数,然后将结果传递到Ruby on rails options.fetch。我不知道';我不明白,ruby-on-rails,ruby,Ruby On Rails,Ruby,请看下面的讨论。我无法理解如何使用块进行提取是一个更好的解决方案。在on: 此行执行basename和大写函数,然后将结果传递到Hash#fetch,而不管选项哈希中是否已经存在:alt的值 在: 只有当Hash#fetch需要默认值时(即:alt键在选项哈希中不存在),才会执行相同的basename/大写代码。这意味着如果不需要,可以跳过默认值的计算(可能很昂贵) 有关更多详细信息,请参阅上的文档。中的关于: 此行执行basename和大写函数,然后将结果传递到Hash#fetch,而不管选项
Hash#fetch
,而不管选项哈希中是否已经存在:alt的值
在:
只有当Hash#fetch
需要默认值时(即:alt键在选项哈希中不存在),才会执行相同的basename/大写代码。这意味着如果不需要,可以跳过默认值的计算(可能很昂贵)
有关更多详细信息,请参阅上的文档。中的关于:
此行执行basename和大写函数,然后将结果传递到Hash#fetch
,而不管选项哈希中是否已经存在:alt的值
在:
只有当Hash#fetch
需要默认值时(即:alt键在选项哈希中不存在),才会执行相同的basename/大写代码。这意味着如果不需要,可以跳过默认值的计算(可能很昂贵)
有关更多详细信息,请参阅上的文档。我不知道Rails对
Hash#fetch
做了什么,但是对于普通的旧Ruby对象,我使用它而不是Hash#[]
,因为当我请求某个东西但它不可用时,我想知道它。这被称为“早期失败”(或实用程序员的“早期崩溃”)我不知道duck-punching Rails对Hash#fetch
做了些什么,但对于普通的旧Ruby对象,我使用它而不是Hash#[]
,因为当我请求一些东西而它不可用时,我想知道它。这被称为“早期失败”(或实用程序员的“早期崩溃”)抱歉我的“在指定:alt选项时避免不必要的计算”不够清楚:-)抱歉我的“在指定:alt选项时避免不必要的计算”不够清楚:-)我想是这样的,但我想我的测试不是很好。因为两种情况下的结果是一样的,所以我感到困惑。谢谢。我原以为是这样的,但我想我的考试不太好。因为两种情况下的结果是一样的,所以我感到困惑。谢谢
options.fetch(:alt, File.basename(src, '.*').capitalize)
options.fetch(:alt) { File.basename(src, '.*').capitalize }