如:
[1,2].each do |i|
puts i
end
能否不要双竖线
[1,2].each do i
puts i
end
为什么一定要双竖线,这 2 个竖线真不好输入,为什么不能去掉呢?
之前也想过,还企图解决一下,不过代价有点高!
这是以前的代码:
class Array
def each_as(name, &block)
define_singleton_method(name) do
instance_variable_get("@__#{name}")
end
define_singleton_method("#{name}=") do |value|
instance_variable_set("@__#{name}", value)
end
each do |elem|
send("#{name}=", elem)
instance_exec(&block)
end
end
end
a = [1,2,3,4,5]
a.each_as(:x) { puts x }
a.each_as(:int) do
puts int * 2
end
配置编辑器有自动补全,用 || 问题不大。
下面的 puts i 没有用||包裹,但前面用 () 包裹了,看来还是有不用双竖线的特别情况
c=->(i) do puts i end
c.call("hi")
本想着 for i in arr 这种写法挺好,但 for 在 ruby 中作用域与 each 不一样,不能用 for 完全代替 each,那就想着 each 要是不要双竖线,就能代替 for 了,没想到不太可能,只有松本行弘本人能做了
ruby 双竖线中还能有分号,不要双竖线,是不太好整了
[1,2].each do |k;v|
v=7
print k,v,"\n"
end