作者maxwux (賓)
看板Ruby
標題[問題] 關於密碼產生器
時間Tue Jul 20 10:12:18 2010
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)
1F:→ adrianshum:.... 問題和密碼產生一點關係都沒有.... 07/20 10:20
2F:→ adrianshum:|a| 看書有關 blocks 的部份, join 你看 array 的doc 07/20 10:25
3F:→ maxwux:不好意思!我是新手啦!!不過還是很謝謝你! 07/20 11:12
不好意思再請教一下
我稍稍做了註解,可以幫我看一下嗎?
我不確定我這樣的理解對不對?
#!/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)
4F:推 hellolucky:26(大寫)+26(小寫)+10(數字)-6(I1loO0)=56 ?? 07/21 00:08
5F:→ hellolucky:然後是做8(或size)次 不是1~8次 07/21 00:10
6F:→ maxwux:感謝!我瞭解了!! 07/21 10:38