Próbuję wprowadzić hasło wejściowe Ruby z Highline gem, a ponieważ mam dwa razy wpisane hasło, chciałbym wyeliminować duplikację bloków, przez które przechodzę. Przykładowo, prosta wersja tego, co robię teraz to:Ruby - przekazywanie bloków do metod
new_pass = ask("Enter your new password: ") { |prompt| prompt.echo = false }
verify_pass = ask("Enter again to verify: ") { |prompt| prompt.echo = false }
A co chciałbym zmienić to na coś takiego:
foo = Proc.new { |prompt| prompt.echo = false }
new_pass = ask("Enter your new password: ") foo
verify_pass = ask("Enter again to verify: ") foo
który niestety nie działa . Jaki jest właściwy sposób na zrobienie tego?
Próbowałem tego na początku (zanim zadam to pytanie), ale kiedy to zrobię, Highline ignoruje zawartość bloku i umiera z tym błędem: niezdefiniowana metoda '& 'dla" inputstring ": String (NoMethodError) Gdzie inputstring jest tym, co wpisałem w pierwszym pytaniu. –
Brzmi dziwnie. Być może zapomniałeś o przecinku i Ruby zakładała, że chcesz wywołać metodę "&" w ciągu znaków zachęty? Właśnie wypróbowałem ten sam kod z HighLine i działa dobrze. –
Tak, myślę, że robiłem ask ("goo") i foo zamiast pytać ("goo", i foo). To działa teraz. Dzięki Adam! –