Qual è la funzionalità di Ruby che consente a "p *1..10" di stampare i numeri 1-10?

StackOverflow https://stackoverflow.com/questions/708403

  •  22-08-2019
  •  | 
  •  

Domanda

require 'pp'

p *1..10

Questo stampa 1-10.Perché è così conciso?E cos'altro puoi farci?

È stato utile?

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
scroll top