是否有可能實現,因爲這同樣的效果:紅寶石睡眠(0.05)的每個字符,所有輸出
"Hello World".each_char do |c|
print c;
sleep(0.05)
end
在終端輸出?我認爲必須有一個更簡單/更簡潔的方法來做到這一點,而不是將上面的代碼添加到每個字符串的末尾,然後在每個字符串後添加新行。
是否有可能實現,因爲這同樣的效果:紅寶石睡眠(0.05)的每個字符,所有輸出
"Hello World".each_char do |c|
print c;
sleep(0.05)
end
在終端輸出?我認爲必須有一個更簡單/更簡潔的方法來做到這一點,而不是將上面的代碼添加到每個字符串的末尾,然後在每個字符串後添加新行。
好了,所以這是我做的(由@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正常。
我不知道這完全是傻瓜式的證明,但它適合我目前的需求。
把它定義爲一個方法:
def slow_print(string)
string.each_char { |c| print c; sleep(0.05) }
end
然後調用它:
slow_print("Hello World")
我明白,但你知道,如果有一種方法可以一次告訴紅寶石,所有的字符串應印像這樣?我試着重新定義String類 – Oscar
@Oscar什麼方法您使用的打印字符串,現在,'puts'? – Oleander
@Oleander是的,那是一個。是否可能需要重新定義String類中的puts方法? – Oscar