Ich war mein Freund Code analysiert, und ich sah diesen kleinen Schnipsel:
n,a=*$<
ich kann nicht herausfinden, was es bedeutet - ich auf vielen Websites gesucht habe, aber sie scheinen nicht zu erkennen, die spezielle Charaktere.
Ich war mein Freund Code analysiert, und ich sah diesen kleinen Schnipsel:
n,a=*$<
ich kann nicht herausfinden, was es bedeutet - ich auf vielen Websites gesucht habe, aber sie scheinen nicht zu erkennen, die spezielle Charaktere.
$<
ist ARGF. Aus der Ruby-Standarddokumentation:
ARGF ist ein Stream für die Verwendung in Skripten, die Dateien verarbeiten, die als Befehlszeilenargumente übergeben oder über STDIN übergeben werden.
Eine super gute Erklärung here
*
ist Splat-Operator.
Sie weisen a
und n
zu, was an diesem Punkt in ARGF/STDIN ist.
Beispiel:
[email protected] ~$ cat a.txt
a
b
c
[email protected] ~$ cat a.rb
a, n = *$<
puts "a is: #{a}"
puts "n is: #{n}"
[email protected] ~$ ruby a.rb a.txt
a is: a
n is: b
Genauer gesagt ruft '*' 'ARGF # to_a' auf, was ein Alias für [ARGF # readlines'] ist (http://ruby-doc.org/core-2.4.1/ARGF.html#method-i- readlines), also 'n, a = * $ <' ist äquivalent zu 'n, a = ARGF.readlines' – Stefan
'$ <' ist ARGF und '*' ist Splat. – radubogdan
Was bedeutet ARGF? – Ivy
Überprüfen Sie auch https://StackOverflow.com/a/3747135/846163 und führen Sie das Snippet innerhalb von irb aus. Der Code nimmt die Eingabe von STDIN und nimmt die ersten zwei Zeilen in "n" und "a". – sschmeck