查看: 2138|回复: 4

[已经解决] 请问脚本中经常出现的|x|是什么意思啊?

[复制链接]
梦石
0
星屑
50
在线时间
35 小时
注册时间
2008-12-3
回帖
42
发表于 2014-10-9 19:48:35 | 显示全部楼层 |阅读模式

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

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

×
小弟初学脚本,还望指教:
例如下面这段代码:

def draw_all_items
  item_max.times{ |i| draw_item(i) }
end

中的 | i |到底是什么意思啊?
小弟不明白 | | 符号的作用是什么,望指明。

梦石
1
星屑
23246
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2014-10-9 20:49:33 | 显示全部楼层
{ |i| draw_item(i) }
代码块的参数为i

例如,下面这个语句:
item_max.times{ |i| draw_item(i) }

item_max 为5的时候执行的代码就是
  1. draw_item(0)
  2. draw_item(1)
  3. draw_item(2)
  4. draw_item(3)
  5. draw_item(4)
复制代码
(未测试,忘记是0~4还是1~5了囧)

点评

代码块是指 begin...end 吧 ,block 貌似中文叫“区块”…… 不过还是用英文比较好……  发表于 2014-10-10 12:35
关键词:Ruby+代码块,随便搜索一下可以见到很多结果  发表于 2014-10-9 20:52

评分

参与人数 1梦石 +1 收起 理由
taroxd + 1 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
9716
在线时间
2775 小时
注册时间
2008-9-5
回帖
3458

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

发表于 2014-10-10 22:08:22 | 显示全部楼层
本帖最后由 cinderelmini 于 2014-10-10 22:09 编辑

简单理解的话就是:
  1. item_max.times{ |i| draw_item(i) }
复制代码
等同于:
  1. for i in 0...item_max
  2.   draw_item(i)
  3. end
复制代码
前面的对象必须是个大于0的数字(是大于0没错吧?),
这是.times

其他的还有:
.each{|a| xxx}
.each_with_index{|a, b| xxxxxxx}
each的话,对象必须是个数组,||里面的值指的是这个数组里面从头到尾的每一个成员,运行过程就是每一个成员都走一遍;
each_with_index的话,对象也必须是个数组,但||里面的前一个同上,后一个是数组里从头到尾的序号,0~(数量-1)。
此外,{}里的内容每一个完整句子写完之后是可以换行的。

回复

使用道具 举报

梦石
0
星屑
50
在线时间
35 小时
注册时间
2008-12-3
回帖
42
 楼主| 发表于 2014-12-15 14:39:41 | 显示全部楼层

呃。。。
意思是说
|i|的作用类似于JAVA中for循环中的index参数吗?

点评

va也能用for循环。。。  发表于 2014-12-15 22:27
回复

使用道具 举报

梦石
0
星屑
50
在线时间
269 小时
注册时间
2014-5-9
回帖
124

开拓者

发表于 2014-12-15 18:30:48 | 显示全部楼层
银色子夜 发表于 2014-12-15 15:39
呃。。。
意思是说
|i|的作用类似于JAVA中for循环中的index参数吗?

array=[1,2,3]
array.each {|i| p i}

#=>
#1
#2
#3
泉眼无声惜细流,树阴照水爱晴柔。
小荷才露尖尖角,早有蜻蜓立上头。
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部