我正在使用ruby的内置函数。我想知道如何动态分配值并在块中打印它。
让我告诉你我的榜样。
irb(main):001:0> i = 0
=> 0
irb(main):002:0> a = "a"
=> "a"
irb(main):003:0> while i<10
irb(main):004:1> x,a = a, a.next
irb(main):005:1> print x, " "
irb(main):006:1> i+=1
irb(main):007:1> end
a b c d e f g h i j => nil
现在我想用x.times
方法获得相同的结果。 10.times {puts x,a=a, a.next}
引发错误。如何使用x.times
获得相同的结果?
我的ruby版本是1.8.7
编辑:我尝试了一下并得到了这个。但是我们不能像我在while循环中那样使用赋值吗?除了打印“a”和空格外,一切似乎都没问题。你能帮我打印出“a”和空格吗?
irb(main):011:0> x="a"
=> "a"
irb(main):012:0> 10.times {print x=x.next}
bcdefghijk=> 10
答案 0 :(得分:1)
我无法通过一行代码看到一种明显的方法来执行您所要求的工作,但a='a'; 10.times {x,a = a, a.next; print x,' '}
似乎对我有用:
> a='a'; 10.times {x,a = a, a.next; print x,' '}
=> "a b c d e f g h i j "
在Ruby中,您可以使用;
作为命令分隔符,但将所有内容写入一行。
当然,您可以轻松地写一下:
> a='a';
10.times do
x,a = a, a.next;
print x,' '
end
=> "a b c d e f g h i j "
并获得相同的结果。