Ruby 谁能帮我分解一下这行代码?

shangrenzhidao · 2014年08月01日 · 最后由 besfan 回复于 2014年08月02日 · 2099 次阅读

(0...4).map{65.+(rand(25)).chr}.join 65.+(rand(25)).char 这个地方不是很明白? :D

相当于

(65 + rand(25) ).chr

65 = 'A‘ 90 = ’Z‘

相当于 (65+rand(25)).chr

执行顺序是

num = 65.+(random(25))
num.chr

65.+ 表示后面的 + 是 65 的方法调用吧,解释器会解释后面的参数

65.+ 3  #=> 68

我是猜的

能告诉我这么要这么写么?

个人觉得很丑陋

这是个很丑陋的写法:

65.+(rand(25)).chr

给楼主一个同样效果,但更漂亮的写法:

('A'..'Z').to_a.sample

#5 楼 @kgen 可是这样多制造了 25 个 char 对象

#6 楼 @nouse 在这个男女比例失调的年代,多几个对象多好呀 😄

需要 登录 后方可回复, 如果你还没有账号请 注册新账号