Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails options.fetch。我不知道';我不明白_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails options.fetch。我不知道';我不明白

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,而不管选项

请看下面的讨论。我无法理解如何使用块进行提取是一个更好的解决方案。

在on:

此行执行basename和大写函数,然后将结果传递到
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 }