В JavaScript console.log
работает следующим образом:
$ node
> console.log(1,2) ; console.log(3,4)
1 2
3 4
В Ruby я хочу вывести значение a
, затем пробел, затем значение b
, а затем следующую строку новой строки. Ни один из них не является удовлетворительным:
$ irb
2.4.1 :001 > print 1,2 ; print 3,4
1234 => nil
2.4.1 :002 > puts 1,2 ; puts 3,4
1
2
3
4
=> nil
Мне не повезло, не сворачивая мою?
Согласно документу, вы должны переопределить разделитель полей и разделитель записей.
$, = " " # field separator
$\ = "\n" # record separator
print 3, 5
3 5
nil
Ruby-эквивалент для Javascript
console.log
Концептуально класс Ruby Logger
близок:
require 'logger'
logger = Logger.new(STDOUT)
logger.info [1, 2]
logger.info [3, 4]
но его вывод по умолчанию совсем другой:
I, [2017-10-20T09:29:16.372886 #13107] INFO -- : [1, 2]
I, [2017-10-20T09:29:16.372966 #13107] INFO -- : [3, 4]
Вы можете написать собственный форматировщик:
class SimpleFormatter
def call(severity, time, progname, msg)
"%s\n" % msg2str(msg)
end
def msg2str(msg)
case msg
when String then msg
when Array then msg.map(&:inspect).join(' ')
else msg.inspect
end
end
end
Использование:
require 'logger'
logger = Logger.new(STDOUT, formatter: SimpleFormatter.new)
logger.info [1, 2]
logger.info [3, 4]
Выход:
1 2
3 4
Вы также можете учесть severity
чтобы соответствующим образом раскрасить ваш результат (так что logger.warn
печатает желтым цветом, logger.error
печатает красным цветом и т.д.)
Эквивалентом будет
printf "%s %s\n", 1, 2
или же
puts [1, 2].join(" ")
Но вы пытаетесь эмулировать javascript, чтобы отображать содержимое двух переменных в одной строке, я не знаю о javascript, но в Ruby две переменные, разделенные запятой, являются массивом. Реальный эквивалент Ruby будет
p [1, 2]
или с тех пор, как вы используете irb
[1, 2]
В console.log вы также видите строку, в которой выполняется этот код, вы можете сделать это с помощью __LINE__. Очень простая отладка, которую вы можете достичь при выполнении сценария, выглядит так:
var = "content"
[__FILE__, __LINE__, "var", var]
Таким образом вы получите имя файла, в котором находится строка, номер строки, имя переменной и ее содержимое. Назовите это бедным отладчиком mans или console.log, если хотите.