Ruby/Powrót do prostych przykładów: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Szymon wro (dyskusja | edycje)
Szymon wro (dyskusja | edycje)
Linia 13:
end
end
puts fact(ARGV[0].to_i)
</pre>
 
Ponieważ jest to pierwsze objaśnienie, zbadamy każdą linię osobno.
Linia 111 ⟶ 112:
</pre>
 
Jeden słaby punkt: czasami okno tekstowe z powodu prędkości działania posiada buforowane wyjście. Poszczególne znaki są buforowane i wyświetlane dopiero gdy pojawi się znak przejścia do nowej linii. Więc, jeżeli skrypt naszej zgadywanki nie pokazuje zachęty dla użytkownika dopóki użytkownik nie poda odpowiedzi, niemal na pewno winne jest buforowanie. Aby upewnić się, że tak się nie stanie możesz wyświetlić (ang. ''flush'' - dosł. "wylać") wyjście jak tylko zostanie wydrukowana zachęta dla użytkownika. ''flush'' mówi standardowemu urządzeniu wyjściowemu (obiekt nazwany ''STDOUT''), "nie czekaj; wyświetl to co masz w tej chwili."
One possible gotcha: sometimes a text window is programmed to buffer output for the sake of speed, collecting individual characters and displaying them only when it is given a newline character. So if the guessing game script misbehaves by not showing the prompt lines until after the user supplies a guess, buffering is the likely culprit. To make sure this doesn't happen, you can flush the output as soon as you have printed the prompt. It tells the standard output device (an object named STDOUT), "don't wait; display what you have in your buffer right now."
 
<pre>
04 print "guess? "; STDOUT.flush
...
13 print "guess? "; STDOUT.flush
</pre>
 
I rzeczywiście, możemy jesteśmy z tym bardziej ostrożni również w następnym skrypcie.
 
=== Regular expressions ===
And in fact, we were more careful with this in the next script.
Regular expressions
 
Finally we examine this program from the chapter on regular expressions.