ruby-to_a和*运算符进行数组转换

如果定义了to_a(转为数组)方法,它就可以提供一个对象的数组式样的表现形式。其中to_a最显著的特点是,它会自动与*运算符绑定。*运算符(称为星号,展开数组),确实可以展开其包含的组件,这些组件又构成了这个数组。
   星号运算符用于方法参数列表,用于参数时它表示一个参数可以吸收可选参数到一个数组中。在更为通用的例子中,星号可以转换任何数组或者任何可以响应to_s的对象成为与之对等的裸列表。
   裸列表由许多逗号分隔的标识符或者字面对象构成。裸列表仅在指定的上下文中有合法的语法。例如可以将裸列表放到数组的字面构造器方括号中:[]
这有一点细微的差别,位于方括号中的符号不是数组,它是一个列表,由于方括号的原因,数组就可以通过列表来构建。
星号有着一种“方括号移除”或者“展开数组”的效果。星号可以让一个数组变成列表,如果让一个加星号的数组来构建数组
>>array=[1,2,3,4,5]

=>[1,2,3,4,5]

[*array]
=>[1,2,3,4,5]
在array中的数组被降级,因此可以说由于星号的缘故,他从数组变成了裸列表

[array]
=>[[1,2,3,4,5]]
其中一个含义就是:可以在方法的传参前使用星号 ,它可以将数组转化为列表。假如在数组中有一些对象,那这些对象就需要传递到有参数列表的方法中,
def combine(first_name,last_name)
first_name +""+last_name
end
names=[“David”,“Black”]
puts combine(*names)
如果不使用转换数组的星号,那么将仅传递一个参数------一个数组,把他传递给方法,方法将不会接受。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值