952 votes

Ruby: ce n' %w(array)?

Je suis à la recherche de la documentation pour FileUtils. Je suis confus par la ligne suivante:

FileUtils.cp %w(cgi.rb complex.rb date.rb), '/usr/lib/ruby/1.6'

Quel est le %w signifie? Pouvez-vous m'indiquer la documentation?

1386voto

sepp2k Points 157757

%w(foo bar) est un raccourci pour ["foo", "bar"]. C'est une notation pour écrire un tableau de chaînes de caractères séparées par des espaces au lieu des virgules et sans les guillemets autour d'eux. Vous pouvez trouver une liste de façons d'écrire des littéraux dans zenspider de quickref.

558voto

Mike Woodhouse Points 27748

Je pense que d' %w() comme un "mot tableau" les éléments sont séparés par des espaces.

Il y a d'autres % choses:

  • %r() est une autre façon d'écrire une expression régulière.
  • %q() est une autre façon d'écrire une seule chaîne de caractères entre guillemets (et peut être sur plusieurs lignes, ce qui est utile)
  • %Q() donne une chaîne de caractères entre guillemets
  • %x() est une commande shell
  • %i() donne un tableau de symboles (Ruby >= 2.0.0)

Je ne connais pas les autres, mais il peut y avoir certains qui rôdent autour de vous...

61voto

Eraden Points 821

Il y a aussi de %s qui vous permet de créer des symboles, par exemple:

%s|some words|          #Same as :'some words'
%s[other words]         #Same as :'other words'
%s_last example_        #Same as :'last example'

Depuis ruby 2.0.0 vous avez aussi:

%i( a b c )   # => [ :a, :b, :c ]
%i[ a b c ]   # => [ :a, :b, :c ]
%i_ a b c _   # => [ :a, :b, :c ]
# etc...

34voto

27voto

Mark Crowther Points 61

Si un vieux post, la question de garder à venir et les réponses ne sont pas toujours sembler évident pour moi. Donc, voici mes pensées. (Éhontée de la croix-post dans l'espoir que nous pouvons clou à ce sujet...)

%w %W sont des exemples de Général Délimité d'Entrée types, qui se rapportent à des Tableaux. Il existe d'autres types incluent %q, %Q, %r, %x et %je.

La différence entre les majuscules et les minuscules, c'est qu'il nous donne accès aux fonctionnalités de simple et double quote. Avec des guillemets simples et minuscules %w, nous n'avons pas de code d'interpolation (par exemple, #{someCode} ) et un nombre limité de caractères d'échappement qui travaillent (par exemple,\, \n ). Avec des guillemets doubles et les majuscules %W nous n' avons accès à ces fonctionnalités.

Le délimiteur utilisé peut être n'importe quel caractère, et pas seulement la parenthèse ouvrante. Jouer avec les exemples ci-dessus pour voir cela en effet.

Pour une écriture complète avec des exemples de cas %w et la liste complète, les caractères d'échappement et des séparateurs - avoir un regard sur: http://cyreath.blogspot.com/2014/05/ruby-w-vs-w-secrets-revealed.html

Marque

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X