- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
Ruby 语言源代码,lib/fileutils.rb
,方法 mkdir_p
简化后如下所示:
def mkdir_p(list, options={})
return *list if options[:noop]
# ...
return *list
end
从我对 Ruby 的了解和测试来看,这里没有意义。是否有任何边缘情况会产生影响?
相关地,如果不存在这会影响输出的边缘情况,splat 是完全无害的还是会导致任何 Ruby 解释器执行额外(不必要的)工作?
最佳答案
return l
和return *l
其实是有区别的;这有助于了解要查找的内容。
一个重要的区别是它生成数组的副本或物化枚举器——在所有情况下都会返回一个新数组。 p>
def x(l)
return *l
end
p = ["hello"]
q = x(p)
q[0] = "world"
# p -> ['hello']
# q -> ['world']
u = x(0.upto(2))
# u -> [0, 1, 2] - Enumeration is forced
另一个区别是 splat 运算符会将 nil
强制转换为一个空数组,并将其他(非数组/枚举器)值强制转换为一个元素的数组 - 同样,新 在所有情况下都返回数组。
r = x(nil)
# r -> []
s = x("one")
# s -> ['one']
因此,使用 return *l
具有微妙的含义,希望方法文档充分涵盖这些含义,否则在使用中“不足为奇”。
关于ruby - Ruby 方法返回 splat-list 的任何理由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22340345/
您好,我希望我的下一个输出(在本例中就是字母)在上一个输出之后输出 8 个空格。这适用于第一个字符,但之后的 printf 语句不起作用。它在第一个 printf 语句之后立即打印,我试图将其设置为
我想知道制作 std::list<>::splice 背后的基本原理是什么使引用被拼接到新容器中的子序列的迭代器无效。这对我来说有点不合逻辑,尤其是考虑到标准 std::container::swap
谁能告诉我为什么我应该使用 Azure Function 输出绑定(bind)(例如 SendGrid 或 Twilio)而不是仅仅在我的 C# 函数中显式使用适当的 SDK(例如 Sendgrid
我们在当前项目中使用 React 和 TypeScript,我遇到了以下行为。 import React, { Component } from 'react'; 我将上面的行替换为下面的行,因为它似
我是一名优秀的程序员,十分优秀!