Zurück - Dup - Weiter - Inhaltsverzeichnis
Ruby kann nicht nur mit Zahlen umgehen, sondern auch mit Zeichenketten (Strings). Ein String ist etwas zwischen doppelten ("...") oder einfachen ('...') Anführungsstrichen.
ruby> "abc" "abc" ruby> 'abc' "abc"
Die Unterschiede zwischen doppelten und einfachen Anführungszeichen bestehen darin: Zwischen doppelten Anführungszeichen sind mehrere Ausdrücke, die mit einem Backslash (\) angeführt werden verfügbar, und auch die Ergebnisse von Ausdrücken, die innerhalb von #{ und } stehen, werden eingefügt. Betrachten Sie folgende Beispiele:
ruby> "\n"
"\n"
ruby> '\n'
"\\n"
ruby> "\001"
"\001"
ruby> '\001'
"\\001"
ruby> "abcd #{5*3} efg"
"abcd 15 efg"
ruby> var = " abc "
" abc "
ruby> "1234#{var}5678"
"1234 abc 5678"
Strings in Ruby sind schlauer als die in C. Zum Beispiel bedeutet `+' Verknüpfung und `* n' n-fache Wiederholung.
ruby> "foo" + "bar" "foobar" ruby> "foo" * 2 "foofoo"
Dies wäre in C wie folgt zu schreiben:
char *s = malloc(strlen(s1)+strlen(s2)+1); strcpy(s, s1); strcat(s, s2);
Wir sind sogar von jeglicher Speicherverwaltung befreit und müssen nicht einmal über den Speicherverbrauch eines Strings nachdenken.
Strings in Ruby haben viele Eigenschaften, wobei nur einige wenige von ihnen hier eingeführt werden.
Verkettung
ruby> word = "fo" + "o" "foo"
Wiederholung
ruby> word = word * 2 "foofoo"
Holen eines Zeichens (Zeichen sind Integer in Ruby)
ruby> word[0] 102 # 102 ist der ASCII-Code von `f' ruby> word[-1] 111 # 111 ist der ASCII-Code von `o'
Extrahieren eines Teilstrings
ruby> word[0,1] "f" ruby> word[-2,2] "oo" ruby> word[0..1] "fo" ruby> word[-2..-1] "oo"
Gleichheit
ruby> "foo" == "foo" TRUE ruby> "foo" == "bar" FALSE
Anmerkung: Die oberen Beispiele sind Ausgaben von Ruby 1.0.
Ausgaben von Ruby 1.1 werden in Kleinbuchstaben angezeigt, d.h., true,
false.
Lassen Sie uns nun ein ``Rätsel'' mit diesen Features machen. Dieses Rätsel heißt `Errate das Wort'. Das Wort ``Rätsel'' ist zu würdevoll für das, was nun folgt ;-)
words = ['foobar', 'baz', 'quux']
srand()
word = words[rand(3)]
print "Raten Sie: "
while guess = STDIN.gets
guess.chop!
if word == guess
print "Sie gewinnen.\n"
break
else
print "Sie verlieren.\n"
end
print "Raten Sie: "
end
print "das Wort war ", word, ".\n"
Sie brauchen nicht die Details dieses Programmes verstehen.
Ein Ergebnis dieses Programmes sieht wie folgt aus. (meiner
Antwort geht ein Raten Sie: voraus)
Raten Sie: foobar Sie verlieren. Raten Sie: quux Sie verlieren. Raten Sie: ^D das Wort war baz.
Oh, Ich habe viele Fehler gemacht, trotz der 1/3 Wahrscheinlichkeit . Es ist nicht spannend -- es ist kein gutes Beispiel...
Zurück - Dup - Weiter - Inhaltsverzeichnis