[問題] 關於密碼產生器

看板Ruby作者 (賓)時間15年前 (2010/07/20 10:12), 編輯推噓1(105)
留言6則, 3人參與, 最新討論串1/2 (看更多)
def random_password(size = 8) chars = (('A'..'Z').to_a + ('a'..'z').to_a + ('0'..'9').to_a) - %w(I 1 l o O 0 ) (1..size).collect{|a| chars[rand(chars.size)] }.join end puts random_password =========================================================================== (1..size).collect{|a| chars[rand(chars.size)] }.join ^^^ ^^^^ 抱歉問一些基本的問題 請問一下這個|a|和.join是什麼意思??? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 121.254.96.194 -- 每次發文都想按i插入文字 vi中毒太深.... ※ 編輯: maxwux 來自: 121.254.96.194 (07/20 10:12)

07/20 10:20, , 1F
.... 問題和密碼產生一點關係都沒有....
07/20 10:20, 1F

07/20 10:25, , 2F
|a| 看書有關 blocks 的部份, join 你看 array 的doc
07/20 10:25, 2F

07/20 11:12, , 3F
不好意思!我是新手啦!!不過還是很謝謝你!
07/20 11:12, 3F
不好意思再請教一下 我稍稍做了註解,可以幫我看一下嗎? 我不確定我這樣的理解對不對? #!/usr/bin/ruby -Ku #定義字串的長度8個字元 def random_password(size = 8) #將要當成密碼的字元存入chars的陣列中 chars = (('A'..'Z').to_a + ('a'..'z').to_a + ('0'..'9').to_a) - %w(I 1 l o O 0 ) #做1~8次,將chars字串長度(58),從中取出亂數的一個數字 #然後這個取出的數字就是chars陣列中的一個元素,例如chars[0]就等於A #經過collect之後這8個字分別是陣列中的8個元素 #再經由join之後,把陣列變成了字串 #而|a|是區塊變數,可省略不寫 (1..size).collect{|a| chars[rand(chars.size)] }.join end #印出亂數產生的密碼 puts random_password ※ 編輯: maxwux 來自: 121.254.96.194 (07/20 11:56) ※ 編輯: maxwux 來自: 121.254.96.194 (07/20 11:57)

07/21 00:08, , 4F
26(大寫)+26(小寫)+10(數字)-6(I1loO0)=56 ??
07/21 00:08, 4F

07/21 00:10, , 5F
然後是做8(或size)次 不是1~8次
07/21 00:10, 5F

07/21 10:38, , 6F
感謝!我瞭解了!!
07/21 10:38, 6F
文章代碼(AID): #1CHGO5W3 (Ruby)
討論串 (同標題文章)
文章代碼(AID): #1CHGO5W3 (Ruby)