02. Buchstaben
Wir haben also alles über Zahlen gelernt, aber was ist mit Buchstaben? Wörtern? Text?
Wir bezeichnen Gruppen von Buchstaben in einem Programm als Strings (Zeichenketten). (Sie können sich Buchstaben vorstellen, die zusammen entlang eines Banners gedruckt sind). Um leichter zu erkennen, welche Teile des Codes Strings sind, werde ich die Strings rot färben. Hier sind einige Beispiele für Strings:
'Hallo.'
'Ruby rockt.'
'5 ist meine Lieblingszahl... was ist deine?'
'Snoopy sagt #%^?&*@! wenn ihm jemand auf den Zeh tritt.'
' '
''
Wie Sie sehen können, können Strings Satzzeichen, Ziffern, Symbole und Leerzeichen enthalten... viel mehr als nur Buchstaben. Der letzte String enthält nichts; wir nennen das einen leeren String.
Wir haben puts verwendet, um Zahlen auszugeben; versuchen wir es noch einmal mit einigen Strings:
puts 'Hallo Welt!'
puts ''
puts 'Auf Wiedersehen.'
Hallo Welt!
Auf Wiedersehen.
Das hat gut funktioniert. Versuchen Sie jetzt selbst einige Strings.
String-Arithmetik
Genauso wie Sie mit Zahlen rechnen können, können Sie auch mit Strings rechnen! Nun ja, teilweise... Sie können Strings addieren. Versuchen wir, zwei Strings zu addieren und sehen, was puts macht.
puts 'Ich mag' + 'Apfelkuchen.'
Ich magApfelkuchen.
Hoppla! Ich habe vergessen, ein Leerzeichen zwischen 'Ich mag' und 'Apfelkuchen.' zu setzen. Leerzeichen spielen in Ihrem Code normalerweise keine Rolle, aber innerhalb von Strings sind sie wichtig. (Es stimmt, was man sagt: Computer tun nicht das, was man will, sondern nur das, was man ihnen sagt). Versuchen wir es noch einmal:
puts 'Ich mag ' + 'Apfelkuchen.'
puts 'Ich mag' + ' Apfelkuchen.'
Ich mag Apfelkuchen.
Ich mag Apfelkuchen.
(Wie Sie sehen können, ist es egal, welchem String ich das Leerzeichen hinzufüge.)
Sie können also Strings addieren. Aber Sie können sie auch multiplizieren! (Zumindest mit einer Zahl). Sehen Sie sich das an:
puts 'blinzeln ' * 4
Augen klimpern
(Nur ein Scherz... es macht eigentlich das hier:)
blinzeln blinzeln blinzeln blinzeln
Wenn man darüber nachdenkt, macht das absolut Sinn. Schließlich bedeutet 7*3 eigentlich 7+7+7, also bedeutet 'muh'*3 einfach 'muh'+'muh'+'muh'.
12 vs '12'
Bevor wir weitermachen, müssen wir sicherstellen, dass wir den Unterschied zwischen Zahlen und Ziffern verstehen. 12 ist eine Zahl, aber '12' ist ein String aus zwei Ziffern.
Lassen Sie uns damit ein wenig herumspielen:
puts 12 + 12
puts '12' + '12'
puts '12 + 12'
24
1212
12 + 12
Wie wäre es damit?
puts 2 * 5
puts '2' * 5
puts '2 * 5'
10
22222
2 * 5
Diese Beispiele waren ziemlich einfach. Wenn Sie jedoch nicht aufpassen, wenn Sie Strings und Zahlen mischen, könnten Sie auf...
Probleme
An diesem Punkt haben Sie vielleicht einige Dinge ausprobiert, die nicht funktioniert haben. Falls nicht, hier sind einige:
puts '12' + 12
puts '2' * '5'
#<TypeError: can't convert Fixnum into String>
Hmmm... Eine Fehlermeldung. Das Problem ist, dass man nicht wirklich eine Zahl zu einem String addieren oder einen String mit einem anderen String multiplizieren kann. Das macht nicht viel Sinn, genau wie:
puts 'Betty' + 12
puts 'Fred' * 'John'
Eine Sache, die Sie wissen sollten: Sie können 'schwein'*5 in einem Programm schreiben, da das nur bedeutet, dass 5 Sätze des Strings 'schwein' zusammenaddiert werden. Sie können jedoch nicht 5*'schwein' schreiben, da das 'schwein' Sätze der Zahl 5 bedeutet, was einfach albern ist.
Das Apostroph (Escape)
Schließlich, was ist mit einem Programm, das Das ist 'ne Wucht! ausgibt? Wir können dies versuchen:
puts 'Das ist 'ne Wucht!'
Nun, das wird nicht funktionieren; ich werde nicht einmal versuchen, es auszuführen. Der Computer dachte, wir wären mit dem String fertig. (Deshalb ist es gut, einen Texteditor zu haben, der Syntax-Hervorhebung für Sie macht). Wie lassen wir den Computer also wissen, dass wir im String bleiben wollen? Wir müssen das Apostroph maskieren (escapen), so:
puts 'Das ist \'ne Wucht!'
Das ist 'ne Wucht!
Der Backslash (\) ist das Escape-Zeichen. Mit anderen Worten, wenn Sie einen Backslash und ein anderes Zeichen haben, werden sie manchmal in ein neues Zeichen übersetzt. Die einzigen Dinge, die der Backslash jedoch maskiert, sind das Apostroph und der Backslash selbst. (Wenn man darüber nachdenkt, müssen Escape-Zeichen sich immer selbst maskieren).
Ich denke, ein paar Beispiele sind angebracht:
puts 'Das ist \'ne Wucht!'
puts 'Backslash am Ende des Strings: \\'
puts 'hoch\\runter'
puts 'hoch\runter'
Das ist 'ne Wucht!
Backslash am Ende des Strings: \
hoch\runter
hoch\runter
Da der Backslash 'r' nicht maskiert, aber sich selbst maskiert, sind die letzten beiden Strings identisch. Sie sehen im Code nicht gleich aus, aber in Ihrem Computer sind sie gleich.
Wenn Sie weitere Fragen haben, lesen Sie einfach weiter! Ich kann nicht jede Frage auf dieser Seite beantworten.