ホーム DoRuby ruby で * を活用してパスワード生成するプログラムを短く書く

ruby で * を活用してパスワード生成するプログラムを短く書く

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

ruby の学習をしていたときに * (アスタリスク)の使い方で面白いと思ったことがありましたので紹介します。

 *の使い方のここが面白い

  1. レンジの前につけると配列を生成する。
  2. 文字列に対して文字列を引数として*を使用すると join となる。

※ 文字列に数字を*するとその数字の回数文字列を繰り返すのも勿論言語として面白いです。

 こんな感じ

そこで、例えば12文字の英数パスワード生成スクリプトは下記の書き方ができます。

[*0..9, *’A’..’Z’, *’a’..’z’].sample(12)*”

内容は下記となります。

  1. []で配列を作成します。
  2. *0..9 で 0から9までの数字が1つずつ入った配列を生成します。
  3. *’A’..’Z’ で AからZまでの半角大文字アルファベットが1つずつ入った配列を生成します。
  4. *’a’..’z’ で aからzまでの半角小文字アルファベットが1つずつ入った配列を生成します。
  5. sample(12) で配列からランダムに要素を12個取り出した配列を返します。
  6. *” で join(”) となり配列の要素を ” で繋いだ文字列を返します。

どんなオブジェクトにどんなオブジェクトを渡すかによってメソッドの挙動が変わるところが興味深いです。

 参考記事

rubyでパスワードを自動生成するプログラムの紹介

http://doruby.kbmj.com/nakahira_on_rails/20091026/ruby_password_

記事を共有
モバイルバージョンを終了