2015-11-19 31 views
1

是否有可能實現,因爲這同樣的效果:紅寶石睡眠(0.05)的每個字符,所有輸出

"Hello World".each_char do |c| 
    print c; 
    sleep(0.05) 
end 

在終端輸出?我認爲必須有一個更簡單/更簡潔的方法來做到這一點,而不是將上面的代碼添加到每個字符串的末尾,然後在每個字符串後添加新行。

回答

0

好了,所以這是我做的(由@Orleander幫助):

def puts(o) 
    if o.is_a? String 
    o.each_char do |c| print c; sleep(0.05) end 
    print "\n" 
    else 
    super(o) 
    end 
end 

它重新定義了看跌期權的方法,這樣,如果該參數是一個字符串,那麼它會打印出每個字符與0.05的每一個延遲 然後打印一個換行符(因爲我們以前使用打印每個字符),所以它是像原來的放法。 如果它不是一個字符串,那麼它將恢復到放-ING正常。

我不知道這完全是傻瓜式的證明,但它適合我目前的需求。

1

把它定義爲一個方法:

def slow_print(string) 
    string.each_char { |c| print c; sleep(0.05) } 
end 

然後調用它:

slow_print("Hello World") 
+0

我明白,但你知道,如果有一種方法可以一次告訴紅寶石,所有的字符串應印像這樣?我試着重新定義String類 – Oscar

+0

@Oscar什麼方法您使用的打印字符串,現在,'puts'? – Oleander

+0

@Oleander是的,那是一個。是否可能需要重新定義String類中的puts方法? – Oscar