J'essaie de faire une entrée de mot de passe Ruby avec le Highline gem et depuis que l'utilisateur entre le mot de passe deux fois, je voudrais éliminer la duplication sur les blocs que je passe. par exemple, une version simple de ce que je fais est maintenant:Ruby - Passer des blocs à des méthodes
new_pass = ask("Enter your new password: ") { |prompt| prompt.echo = false }
verify_pass = ask("Enter again to verify: ") { |prompt| prompt.echo = false }
Et ce que je voudrais changer pour quelque chose comme ceci:
foo = Proc.new { |prompt| prompt.echo = false }
new_pass = ask("Enter your new password: ") foo
verify_pass = ask("Enter again to verify: ") foo
ce qui ne fonctionne malheureusement pas . Quelle est la bonne façon de faire cela?
Je l'avais essayé initialement (avant de poser cette question), mais quand je fais cela, Highline ignore le contenu du bloc et meurt avec cette erreur: méthode non définie '& 'pour" inputstring ": String (NoMethodError) Où inputtring est ce que j'ai tapé à la première invite. –
Cela semble étrange. Peut-être avez-vous oublié la virgule et Ruby a supposé que vous vouliez invoquer la méthode "&" sur la chaîne d'invite? Je viens d'essayer le même code avec HighLine et ça marche très bien. –
Oui, je pense que je faisais demander ("goo") et foo au lieu de demander ("goo", & foo). Cela fonctionne maintenant. Merci Adam! –