Ruby | Как ссылаться на объект консоли - PullRequest
0 голосов
/ 30 апреля 2020

Есть ли способ ссылаться на консоль в Ruby как на объект?
Например:

console.puts(value)

Причина, по которой я хочу напечатать на консоль вот так, заключается в том, что я хочу сделать многоразовая функция, которая может печатать на консоль или в файл:

def put_value(obj, value)
  obj.puts(value)
end

# To console
put_value(console, "Testing")

# To file
file = File.open("test.txt", "w")
put_value(file, "Testing")

1 Ответ

2 голосов
/ 30 апреля 2020

используйте STDOUT вместо console. STDOUT соединяет вас с выходным потоком текущего tty, передает его туда и имеет тот же API, что и IO (как в вашем File ниже)

def put_value(obj, value)
  obj.puts(value)
end

# To console
put_value(STDOUT, "Testing")
#=> Testing

# To file
file = File.open("test.txt", "w")
put_value(file, "Testing")
#=> nil, but Testing is written to test.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...