Как назначить вывод консоли в качестве значения для некоторой переменной в Ruby? - PullRequest
0 голосов
/ 03 апреля 2012

Я хочу назначить содержимое, напечатанное на консоли, как значение переменной в следующей строке в моем коде. Это возможно с $ stdout?

скажем, например, я печатаю одно значение распакованного массива на консоли. Теперь я хочу использовать это напечатанное значение в качестве значения переменной, приходящей на следующую строку моего кода. например, puts "\nPageSize:\n#{c1}\n" печатает 7117, который является массивом из одного элемента. Теперь я хочу присвоить это напечатанное значение как целое число некоторой переменной x в следующей строке кода ниже этого puts "\nPageSize:\n#{c1}\n".

Ответы [ 3 ]

0 голосов
/ 03 апреля 2012

В IRB вы можете использовать специальную переменную подчеркивания, чтобы получить результат последнего выражения:

> 2 + 2
> x = _
> 4

Но, так как «put» возвращает nil, это не сработает.Если вы избегаете путов, то это сработает.

0 голосов
/ 03 апреля 2012

Обычно вы не можете прочитать то, что написали на стандартный вывод. Вы могли бы monkey-patch puts или IO, чтобы добиться этого - но я думаю, это не то, что вы хотите сделать.

Если вы можете напечатать значение, вы также можете присвоить его переменной (фактически оно уже сохранено в 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".

0 голосов
/ 03 апреля 2012

Вы можете назначить вот так ...........

сначала используйте переменную типа integer

   x = 0

, а затем присвойте

   x = c1

   or

   x = arr[0]

Или так, как вы хотите .........

Но оператор put ничего не возвращает, поэтому вы не можете присвоить напечатанное значение какой-либо переменной. Вместо

используйте некоторую переменную иприсвоить его значение другой переменной.

...