如何将控制台输出作为值分配给Ruby中的某个变量?

时间:2012-04-03 09:09:50

标签: ruby arrays stdout

我想将控制台上打印的内容指定为代码中下一行中变量的值。 这可以用$ stdout吗?

比方说,我在控制台上打印一个解压缩的数组值。 现在我想使用这个打印值作为我的代码下一行的变量值。 例如puts "\nPageSize:\n#{c1}\n"打印7117这是一个单个元素数组。现在我想将此打印值作为整数分配给此puts "\nPageSize:\n#{c1}\n"下面的下一行代码中的某个变量x。

3 个答案:

答案 0 :(得分:0)

在IRB中,您可以使用特殊的下划线变量来获取最后一个表达式的结果:

> 2 + 2
> x = _
> 4

但是由于'puts'返回nil,它将无效。如果你避免看跌期权,那么它就可以了。

答案 1 :(得分:0)

你通常无法回读你写给stdout的内容。您可以猴子补丁putsIO来实现这一点 - 但我想这不是您想要做的。

如果您可以打印该值,您也可以将其分配给变量(实际上它已存储在c1[0]中):

puts "\nPageSize:\n#{c1}\n"
x = c1[0] # or c1.first

或更好

x = c1[0] # or c1.first
puts "\nPageSize:\n#{x}\n"

插值字符串中#{c1}部分的作用是调用c1' to_s将其转换为String并插入String }。因此,它会将[7117]转换为"7117"

答案 2 :(得分:-1)

您可以像这样分配...........

首先使用整数

的intilize变量
   x = 0

然后分配为

   x = c1

   or

   x = arr[0]

或者你想要.........

但是put什么都不返回,所以你不能将打印值分配给某个变量。比你还要

使用某个变量并将其值分配给另一个变量。