Qual è la funzionalità di Ruby che consente a "p *1..10" di stampare i numeri 1-10?
Domanda
require 'pp'
p *1..10
Questo stampa 1-10.Perché è così conciso?E cos'altro puoi farci?
Soluzione
È l'operatore "lo splat".Può essere utilizzato per esplodere matrici e intervalli e raccogliere valori durante l'assegnazione.
Qui vengono raccolti i valori in un'assegnazione:
a, *b = 1,2,3,4
=> a = 1
b = [2,3,4]
In questo esempio i valori nell'array interno (the [3,4]
one) viene esploso e raccolto nell'array contenente:
a = [1,2, *[3,4]]
=> a = [1,2,3,4]
Puoi definire funzioni che raccolgono argomenti in un array:
def foo(*args)
p args
end
foo(1,2,"three",4)
=> [1,2,"three",4]
Altri suggerimenti
Bene:
- importazioni
require pp
la funzionalità pretty-stampa -
p
è un metodo di pretty-stampa con varargs, che pretty-stampe ciascun argomento -
*
significa "espandere l'argomento in varargs" invece di trattare come un singolo argomento - Sintassi sequenza gamma in Ruby
Vuol spiegare adeguatamente? In caso contrario, si prega di elaborare su cui bit è fonte di confusione.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow