加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 这一行代码中的点是什么意思:65.rand(10)

发布时间:2020-12-17 02:23:22 所属栏目:百科 来源:网络整理
导读:我遇到了这行代码,无法理解点的目的.有人可以解释65中的点.兰德(10)正在做什么,这与65兰特(10)有什么不同? 对于完整上下文,我在这个8字符随机字符串生成器中看到了这段代 (0...8).map{65.+(rand(25)).chr}.join = "QSILUSPP"(0...8).map{65.+(rand(25)).chr
我遇到了这行代码,无法理解点的目的.有人可以解释65中的点.兰德(10)正在做什么,这与65兰特(10)有什么不同?

对于完整上下文,我在这个8字符随机字符串生成器中看到了这段代

(0...8).map{65.+(rand(25)).chr}.join => "QSILUSPP"
(0...8).map{65.+(rand(25)).chr}.join => "BJIIBQEE"
(0...8).map{65.+(rand(25)).chr}.join => "XORWVKDV"

解决方法

您可以注意到,在原始代码中有2个方法调用 – 和chr.我可以通过等效代码显示它:

65.send(:+,rand(10)).send(:chr) # is the equal to following line:
65.+(rand(10)).chr

这个技巧产生方法链,允许跳过括号.括号,65.(rand(10)).chr可以写成这样:

(65 + rand(10)).chr

如果没有这个技巧,chr将应用于rand(10),结果字符串将尝试添加到65.它将产生TypeError:

65+(rand(25)).chr
TypeError: String can't be coerced into Fixnum

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读