我想做类似的事情:
[1, 2, 3].map(&:to_s(2))
另外,如何做类似的事情:
[1, 2, 3].map(&:to_s(2).rjust(8, '0'))
?
:to_s
是一个符号,而不是一个方法。所以你不能像这样向它传递任何参数:to_s(2)
。如果你这样做,你会得到错误。这就是你的代码无法工作的原因。所以[1, 2, 3].map(&:to_s(2))
是不可能的,其中[1, 2, 3].map(&:to_s)
可能的。&:to_s
意味着你正在打电话#to_proc
符号上的方法。现在就你的情况而言&:to_s(2)
means :to_s(2).to_proc
。调用该方法之前会发生错误#to_proc
.
:to_s.to_proc # => #<Proc:0x20e4178>
:to_s(2).to_proc # if you try and the error as below
syntax error, unexpected '(', expecting $end
p :to_s(2).to_proc
^
现在尝试一下,并将错误与上面的解释进行比较:
[1, 2, 3].map(&:to_s(2))
syntax error, unexpected '(', expecting ')'
[1, 2, 3].map(&:to_s(2))
^
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)