作者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