Ruby/Łańcuchy znakowe: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Linia 56:
</pre>
 
Ale używając Rubiego, nie musimy zastanawiać się nad miejscem w pamięci zajmowanym przez łańcuch. W ogóle jesteśmy wolni od jakiegokolwiek zarządzania pamięcią.
But using ruby, we do not have to consider the space occupied by a string. We are free from all memory management.
 
Oto kilka rzeczy, które możesz zrobić z łańcuchami.
Here are some things you can do with strings.
 
Konkatenacja:
Concatenation:
 
<pre>
ruby> word = "fo" + "o"
"foo"
</pre>
 
Powtórzenie:
Repetition:
 
<pre>
ruby> word = word * 2
"foofoo"
</pre>
 
Ekstrahowanie znaków (zauważ, że znaki w Rubim są liczbami całkowitymi (integer)):
Extracting characters (note that characters are integers in ruby):
 
<pre>
ruby> word[0]
102 # 102 isjest ASCIIkodem codeASCII ofznaku `f'
ruby> word[-1]
111 # 111 isjest ASCIIkodem codeASCII ofznaku `o'
</pre>
 
(Wartości ujemne oznaczają liczbę znaków od końca łańcucha.)
(Negative indices mean offsets from the end of a string, rather than the beginning.)
 
Ekstrahowanie podłańcuchów:
Extracting substrings:
 
<pre>
ruby> herb = "parsley"
"parsley"
Linia 91 ⟶ 98:
ruby> herb[-5..-2]
"rsle"
</pre>
 
Sprawdzanie równości:
Testing for equality:
 
<pre>
ruby> "foo" == "foo"
true
ruby> "foo" == "bar"
false
</pre>
 
Zróbmy użytek z kilku tych cech. Ta układanka to "co to za słowo", ale być może słowo "układanka" jest zbyt dużo dla następującego kodu ;-)
Now, let's put some of these features to use. This puzzle is "guess the word," but perhaps the word "puzzle" is too dignified for what is to follow ;-)
 
<pre>
# savezapisz thisto asjako guess.rb
words = ['foobar', 'baz', 'quux']
secret = words[rand(3)]
Linia 117 ⟶ 128:
end
puts "The word was ", secret, "."
</pre>
 
Na razie nie przejmuj się za bardzo szczegółami powyższego kodu. Oto jak wygląda uruchomiona układanka.
For now, don't worry too much about the details of this code. Here is what a run of the puzzle program looks like.
 
<pre>
% ruby guess.rb
guess? foobar
Linia 127 ⟶ 140:
guess? ^D
The word was baz.
</pre>
 
(Powinno mi pójść nieco lepiej biorąc pod uwagę, że prawdopodobieństwo sukcesu wynosi 1/3.)
(I should have done a bit better, considering the 1/3 probability of success.)