设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2010|回复: 2
打印 上一主题 下一主题

[已经解决] each的使用有个疑问

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1957
在线时间
410 小时
注册时间
2018-9-25
帖子
38
跳转到指定楼层
1
发表于 2020-5-30 10:15:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
  1. a = 1..10
  2. p a.include?(9.9)
  3. a.each {|i| p i}
复制代码
这段代码的运行结果说明9.9是在1..10里面的,但是each p出来只有整数了(试了一下for也是一样的),是each会对对象做什么处理吗?这个是只针对范围对象的特殊处理?

Lv5.捕梦者 (版主)

梦石
1
星屑
23994
在线时间
3339 小时
注册时间
2011-7-8
帖子
3926

开拓者

2
发表于 2020-6-5 22:33:09 | 只看该作者
Range类的each方法里提到(Ruby2.7.1版本):
The each method can only be used if the begin object of the range supports the succ method. A TypeError is raised if the object does not have succ method defined (like Float).

也就是说当你的Range第一项是整数的时候,调用each就会从这个整数开始数起,不断+1,直到超出范围。
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
13562
在线时间
2753 小时
注册时间
2014-10-4
帖子
756

R考场第七期纪念奖

3
发表于 2020-6-6 01:11:16 | 只看该作者
其实我觉得是有点bug的感觉..
我看了1.8.3的源码
include? 的描述是  对象是否是range的元素之一
但是具体的实现是 对象是否大于下限小于上限 (毕竟一项一项列出来效率太差了)
我感觉可以加个判断 不是同一个类就pass 就没bug了
现在这样 其实就当feature吧  完全不可比较的两个类还是会返回false的反正

而each就是不断succ 所以一定是同一类的

我感觉源码里这段介绍写的超好  
我头一次发现Range还能这样写
附上
Range
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-15 02:06

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表