Как получить ширину окна терминала в Ruby

Какова точка упражнения?

Как уже указывали люди, у вас может быть функция, не имеющая общих функций, с наибольшим элементом, а компилятор автоматически преобразует меньшие ints для вас.

static bool IntegerFunction(Int64 value) { }

Если ваша функция находится на критическом по производительности пути (очень маловероятно, IMO), вы можете обеспечить перегрузку для всех необходимых функций.

static bool IntegerFunction(Int64 value) { }
...
static bool IntegerFunction(Int16 value) { }
44
задан Allen Bargi 15 January 2010 в 12:17
поделиться

4 ответа

    require 'io/console'
    puts "Rows by columns: #{IO.console.winsize}"
    puts "Ruby 2.6.4"
2
ответ дан 26 November 2019 в 20:53
поделиться

В тех случаях, когда полученные данные не имеют значения, значение имеет область их использования.

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

В ситуации, когда у вас есть междоменные проблемы, например, iframe, содержащий страницу из другого домена, у вас есть две разные области. Страница в iframe работает в области домена, откуда она была загружена, поэтому она может получать доступ к ресурсам в этом домене, но она не может получить доступ ни к чему на странице, на которой размещен iframe, поскольку это другая область.

(Примечание: Я не знаю, если термин «сфера» обычно используется в этом контексте, может быть термин, который лучше описывает его.)

-121--4780350-

Это довольно редко для const, чтобы на самом деле помочь компилятору оптимизировать. Необходимо иметь в виду, что const _ cast может использоваться в любом месте для удаления константы из объекта. (хотя на самом деле изменение результирующего объекта не всегда хорошо определено, в некоторых случаях, и поэтому компилятор должен быть осторожен в предположении, что только потому, что объект const передан функции, он не будет изменен)

Аналогично, ключевое слово mutable портит ситуацию. Можно передать объект const функции, но что делать, если этот объект содержит поле с возможностью изменения ?

Компилятор должен проделать большую работу, чтобы убедиться, что можно с уверенностью предположить, что объект действительно постоянен - и к тому времени, когда он сделал всю эту проверку, ключевое слово const на самом деле не имеет значения, потому что он мог бы сделать все тот же анализ для обычного объекта, не являющегося const, а также определить, что он не изменяется и может рассматриваться как постоянный.

Я не скажу, что есть несколько граничных случаев, где ключевое слово const может включить новые оптимизации, но в целом, const - это не рассмотрение производительности, а корректность. Используйте его, чтобы ловить больше ошибок во время компиляции, а не для ускорения кода.

-121--4534338-

ENV ['COLUMNS'] предоставит количество столбцов в терминале.

3
ответ дан 26 November 2019 в 20:53
поделиться

Существует обычная команда UNIX:

tput cols

Это возвращает ширину терминала.

43
ответ дан 26 November 2019 в 20:53
поделиться

Если вы хотите, чтобы ваш код работать через платформы, вот что я использую: http://github.com/cldwalker/hirb/blob/master/lib/hirb/util.rb#l61-71

Также проверьте файл system_extensions в Highline

9
ответ дан 26 November 2019 в 20:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: