2009-04-05 4 views
4

Wenn ich die Klasse von Hallo [0] in Ruby ausgeben, heißt es "String". Dies liegt daran, dass einzelne in Anführungszeichen gesetzte Zeichenfolgen in Ruby existieren und es scheint nicht die Idee eines Zeichenarttyps zu sein. Neulich sagte ich zu meinem Kollegen, dass er eine Reihe von Charakteren habe und er sagte: "Nein, ich habe nicht, ich habe eine Reihe von Strings". Nickerchen, ja, aber technisch ist er vielleicht richtig. Aus der Welt von C kommend, denke ich nicht an einen einzelnen Charakter als String. Ist es vereinbart, dass das oben genannte Hello-Array ein Array von Strings und nicht ein Array von Zeichen ist?Ist 'c' in Ruby ein Zeichen oder eine Zeichenkette - oder beides?

Antwort

13

In C unterscheidet sich ein Zeichen von einem String (einem Array von Zeichen). Ruby hat keinen individuellen Zeichentyp. Zeichenfolgen können eine beliebige Anzahl von Zeichen enthalten, und Fixnummern können den ASCII-Wert für ein Zeichen enthalten und mit der Methode #chr in eine druckbare Zeichenfolge umgewandelt werden, die dieses Zeichen enthält.

Der Unterschied zwischen der einfachen und doppelten Anführungszeichenfolge in Ruby hängt davon ab, wie viel Vorverarbeitung (zB Interpolation) für die Zeichenfolge ausgeführt wird.

2

Ihr Kollege hätte Recht, Ruby scheint keine Klasse von Charakter zu haben.

0

Ja, es gibt keine Char-Klasse in Ruby, es gibt nur String. (Beachten Sie, dass char im C-Standard als 1 Byte definiert ist, was für Unicode-Zeichen nicht der Fall ist).

2

Ja. Während in C eine Zeichenfolge als C-String dargestellt wird, was im Grunde ein nullterminiertes Array von Zeichen ist, ist eine Zeichenfolge in Ruby eine Klasse, die ihren Inhalt auf eine komplexere Weise speichert. Sie können jeden Teil davon in einen neuen String extrahieren, und Ruby wird Ihnen wahrscheinlich keinen geringeren Zugriff darauf geben. In C bekommt man direkten Zugriff auf die Erinnerung, Ruby ist viel abstrakter als das.

Verwandte Themen