的*操作者可用于解压缩变量和数组,使得它们可以作为一个独立的参数的方法进行传递。
如果尚未将单个对象包装在Array中,则可以使用它:
def wrap_in_array(value) [*value] end wrap_in_array(1) #> [1] wrap_in_array([1, 2, 3]) #> [1, 2, 3] wrap_in_array(nil) #> []
在上面的示例中,该wrap_in_array方法接受一个参数value。
如果value为Array,则将其元素解压缩,并创建一个包含这些元素的新数组。
如果value是单个对象,则会创建一个包含该单个对象的新数组。
如果value为nil,则返回一个空数组。
splat运算符在某些情况下在方法中用作参数时特别方便。例如,它允许nil,单个值和数组以一致的方式处理:
def list(*values) values.eachdo |value| # 做有价值的事情 puts value end end list(100) #> 100 list([100, 200]) #> 100 #> 200 list(nil) # 没有输出
问题内容: 如何覆盖解压缩语法和的结果? 例如,您能否以某种方式创建行为如下的对象: 注意: 迭代通过(“ for x in something”)从* splat解包返回不同的元素。 我查看了和,但是这些函数仅涉及两个操作数(如和)的用法,并且似乎与splat运算无关。 问题答案: 迭代对象,并将其元素用作参数。迭代对象的,并使用(相当于括号表示法)来获取键值对。要进行定制,只需使您的对象可迭代
问题内容: 我经常使用Python的语句来显示数据。是的,我知道方法,方法和方法。我也知道splat运算符()可用于将Iterable扩展为函数参数。但是,我似乎无法通过声明来做到这一点。使用清单: 使用元组: 我想念什么吗?这根本不可能吗?接下来到底是什么?该文档说该关键字后面是逗号分隔的表达式列表,但是我想这与列表数据类型不同。我在SO和Web上做了很多挖掘工作,却没有找到明确的解释。 我正在
主要内容:Ruby 算术运算符,Ruby 比较运算符,Ruby 赋值运算符,Ruby 并行赋值,Ruby 位运算符,Ruby 逻辑运算符,Ruby 三元运算符,Ruby 范围运算符,Ruby defined? 运算符,用法 1,用法 2,用法 3,用法 4,Ruby 点运算符 "." 和双冒号运算符 "::",Ruby 运算符的优先级Ruby 支持一套丰富的运算符。大多数运算符实际上是方法调用。例如,a + b 被解释为 a.+(b),其中指向变量 a 的 + 方法被调用,b 作为方法调用的参数
本文向大家介绍Ruby运算符,包括了Ruby运算符的使用技巧和注意事项,需要的朋友参考一下 Ruby运算符 运算符是帮助编译器或解释器执行某些数学,逻辑和关系任务并产生结果的符号。运算符是带有参数的方法调用。 Ruby运算符的类型 Ruby支持多种运算符,但其中很少: 算术运算符 比较运算符 赋值运算符 按位运算符 1)算术运算符 它们是采用两个参数并对它们执行算术运算的数学方法。以下是算术运算符
本文向大家介绍详解Ruby当中的算数运算,包括了详解Ruby当中的算数运算的使用技巧和注意事项,需要的朋友参考一下 Ruby支持一系列丰富的运算符的一个现代化的语言。大多数运算符实际上是方法调用。例如,a + b的被解释为a, +(b)变量引用的对象的方法被称为一个用b作为它的参数。 对于每个运算符 (+ - * / % ** & | ^ << >> && ||), 有相应的赋值运算符缩写形式
问题内容: 我经常使用Python,现在我正在快速学习JavaScript(或者应该说是重新学习)。所以,我想问问,JavaScript和的等效之处是什么? 问题答案: 最接近的成语是 利用函数定义中给定的参数个数这一事实。 您可以将其打包到一些帮助程序中,例如 然后做 如果您想使用语法糖,请编写一个函数,该函数将一个函数转换为另一个函数,该函数使用必需和可选参数调用,并将必需参数以及任何其他可选