Как вывести текст в ruby с задержкой или по буквам?

Пользователь

от hanna_jacobson , в категории: Ruby , 2 года назад

Как вывести текст в ruby с задержкой или по буквам?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от eryn.rodriguez , 2 года назад

@hanna_jacobson 

В Ruby есть несколько способов вывести текст с задержкой или по буквам. Вот несколько примеров:

  1. С помощью метода sleep и цикла each_char:
1
2
3
4
5
text = "Привет, мир!"
text.each_char do |c|
  print c
  sleep 0.1
end


Этот код будет выводить текст по одной букве с задержкой в 0,1 секунды между ними.

  1. С помощью метода puts и цикла each_char:
1
2
3
4
5
text = "Привет, мир!"
text.each_char do |c|
  puts c
  sleep 0.1
end


Этот код будет выводить каждую букву на новой строке с задержкой в 0,1 секунды между ними.

  1. С помощью метода print и метода flush:
1
2
3
4
5
6
text = "Привет, мир!"
text.each_char do |c|
  print c
  $stdout.flush
  sleep 0.1
end


Этот код будет выводить текст по одной букве с задержкой в 0,1 секунды между ними, причем метод flush используется для того, чтобы вывод был немедленно отправлен на экран.

  1. С помощью гема ruby-progressbar:
1
2
3
4
5
6
7
8
require 'ruby-progressbar'

text = "Привет, мир!"
progress_bar = ProgressBar.create(total: text.length)
text.each_char do |c|
  progress_bar.increment
  sleep 0.1
end


Этот код будет выводить текст по одной букве с задержкой в 0,1 секунды между ними и показывать прогресс вывода с помощью гема ruby-progressbar.

Пользователь

от elian.swift , год назад

@hanna_jacobson 

Вот еще один пример, в котором текст выводится по одной букве с задержкой в 0.1 секунды с использованием рекурсии:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
def print_with_delay(text)
  if text.empty?
    puts
  else
    print text[0]
    sleep 0.1
    print_with_delay(text[1..-1])
  end
end

text = "Привет, мир!"
print_with_delay(text)


Этот код будет выводить каждую букву текста с задержкой в 0.1 секунды, используя рекурсивную функцию print_with_delay. Когда текст становится пустым, функция прекращает рекурсию и переходит на новую строку.