39 votes

Rails - Utilisation de %W

J'ai les éléments suivants qui fonctionnent bien :

def steps
    %w[hello billing confirmation]
end

steps.first

Mais je veux faire ceci :

  def step_title
    %w['Upload a photo' 'Billing Info' 'Confirmation Screen']
  end

steps.first

Comment %w permet-il cela ? J'ai essayé une recherche Google, mais Google est faible avec ces types de caractères.

Merci.

Merci

.

59voto

Brian Rose Points 1110

%w crée un « tableau de mots » et utilise des espaces pour séparer chaque valeur. Puisque vous voulez séparer sur une autre valeur (dans ce cas, espace en dehors des ensembles de guillemets), il suffit d'utiliser un tableau standard :

['Upload a photo', 'Billing Info', 'Confirmation Screen']

38voto

Constantine Points 51

%w() est un « tableau de mots » - les éléments sont délimité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 chaîne à guillemets simples (et peut être multiligne, ce qui est utile)

%Q() donne une chaîne à guillemets doubles

%x() est une commande shell.

12voto

iain Points 11602

Vous pouvez également utiliser le antislash pour échapper aux espaces :

%w@foo\ bar bang@

est la même que :

[ 'foo bar', 'bang' ]

Dans votre exemple, je n'utiliserais pas la notation %w, parce que ce n'est pas si clair.

PS. J'aime mélanger les caractères du délimiteur, juste pour ennuyer les membres de l'équipe :) Comme ceci :

%w?foo bar?
%w|foo bar|
%w\foo bar\
%w{foo bar}

5voto

yfeldblum Points 42613

%w[hello billing confirmation] est le sucre syntaxique pour ["hello", "billing", "confirmation"]. Il indique à Ruby de diviser la chaîne d'entrée en mots, en fonction de l'espace blanc, et de renvoyer un tableau des mots.

Si votre cas d'utilisation spécifique signifie que les valeurs du tableau sont autorisées à avoir des espaces, vous ne pouvez pas utiliser %w.

Dans votre cas, ['Upload a photo', 'Billing Info', 'Confirmation Screen'] suffit.

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