Angesichts des Ruby-Codes
line = "first_name=mickey;last_name=mouse;country=usa"
record = Hash[*line.split(/=|;/)]
Ich verstehe alles in der zweiten Zeile außer dem *
Operator - was macht es und wo ist die Dokumentation dafür? (Wie Sie vielleicht erraten haben, erweist sich die Suche nach diesem Fall als schwierig ...)
a,b,*c = d,e,f,*g
setzt a = d, b = e und c = [f, g0, g1, g2, ..., gn], wobei g = [g0, g1, g2, ..., gn]Der splat-Operator entpackt ein an eine Funktion übergebenes Array, sodass jedes Element als einzelner Parameter an die Funktion gesendet wird.
Ein einfaches Beispiel:
Das ist es!
quelle
Wie jeder erwähnt, ist es ein "Splat". Das Suchen nach Ruby-Syntax ist unmöglich, und ich habe dies in anderen Fragen gestellt. Die Antwort auf diesen Teil der Frage lautet, dass Sie weiter suchen
in Google. Google ist für Sie da, setzen Sie einfach das, was Sie sehen, in Worte.
Wie viel Ruby-Code ist dieser Code ziemlich dicht. Das
macht ein Array von sechs Elementen ,
first_name, mickey, last_name, mouse, country, usa
. Dann wird der Splat verwendet, um daraus einen Hash zu machen. Jetzt schicken Sie die Ruby-Leute immer, um sich die Splat-Methode anzusehen, da alles in Ruby verfügbar ist. Ich habe keine Ahnung, wo es ist, aber sobald Sie das haben, werden Sie sehen, dass es einfor
durch das Array läuft und den Hash erstellt.Sie würden nach dem Code in der Kerndokumentation suchen . Wenn Sie es nicht finden können (ich konnte es nicht finden), würden Sie versuchen, einen Code wie diesen zu schreiben (der funktioniert, aber KEIN Ruby-ähnlicher Code ist):
und dann kann die Ruby-Bande Ihnen sagen, warum Ihr Code albern, schlecht oder einfach falsch ist.
Wenn Sie bis hierher gelesen haben, lesen Sie die Hash- Dokumentation zur Initialisierung durch.
Grundsätzlich werden sie durch einen mit mehreren Argumenten initialisierten Hash als Schlüsselwertpaare erstellt:
In Ihrem Beispiel würde dies also zu folgendem Hash führen:
quelle