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

Project1

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

[已经解决] 怎么理解 |actor| ?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
4169
在线时间
258 小时
注册时间
2013-10-13
帖子
815
跳转到指定楼层
1
发表于 2019-8-24 17:17:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
在Interpreter 6中,
iterate_actor(@parameters[0]) do |actor|
怎么理解|actor|?  “|”;里面的|在键盘什么位置?
在Interpreter 1中
  def iterate_actor(parameter)
    # 全体同伴的情况下
    if parameter == 0
      # 同伴全体循环
      for actor in $game_party.actors
        # 评价块
        yield actor
      end
    # 单体角色的情况下
    else
      # 获取角色
      actor = $game_actors[parameter]
      # 获取角色
      yield actor if actor != nil
    end
  end
怎么理解 yield actor?

Lv3.寻梦者

梦石
0
星屑
4169
在线时间
258 小时
注册时间
2013-10-13
帖子
815
2
 楼主| 发表于 2019-8-24 17:21:25 | 只看该作者
符号||是哪个键盘打出来的?
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9682
在线时间
570 小时
注册时间
2017-9-28
帖子
208
3
发表于 2019-8-24 18:15:28 | 只看该作者
1. do |args| ... end 或者 { |args| ... } 中 |args| 就是代入定义时 yield 后面的东西,例如
  1. def f
  2.   yield 1
  3.   yield "喵喵喵"
  4.   yield
  5. end
  6. f { |x| print "我拿到了 #{x.inspect}" }
  7. #=>
  8. 我拿到了 1
  9. 我拿到了 "\u55B5\u55B5\u55B5"
  10. 我拿到了 nil
复制代码

2. 如果是标准美式(中式)键盘,在回车键上方有一个「 \ 」键,按住 shift 按下它就可以打出 |
日文键盘应该在上面一行数字键的最后,按住 shift 按「 ¥ 」键

点评

谢谢  发表于 2019-8-24 18:40

评分

参与人数 1星屑 +50 收起 理由
RyanBern + 50 太醋了

查看全部评分

喵喵喵
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9163
在线时间
466 小时
注册时间
2015-5-8
帖子
866
4
发表于 2019-8-25 04:27:14 | 只看该作者
请教一下那个yield又是什么意思啊?可以举个例子吗?
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
42399
在线时间
7602 小时
注册时间
2009-7-6
帖子
13506

开拓者贵宾

5
发表于 2019-8-25 09:36:34 | 只看该作者
taeckle 发表于 2019-8-25 04:27
请教一下那个yield又是什么意思啊?可以举个例子吗?

相当于js里的调用传入的回调函数

ruby代码
  1. class Array
  2.   def process_first
  3.     yield self.first
  4.     self[0] *= 2
  5.   end
  6. end

  7. [2,3,4].process_first do |num|
  8.   p num
  9. end
复制代码


js代码
  1. Array.prototype.process_first = function(callback) {
  2.     callback(this[0]);
  3.     this[0] *= 2;
  4. };

  5. [2,3,4].process_first(function(num) {
  6.     console.log(num);
  7. });
复制代码

点评

“调用传入的回调函数”又是什么意思啊?跟yield有什么关系吗?  发表于 2019-9-13 23:43

评分

参与人数 1星屑 +50 收起 理由
RyanBern + 50 这鸡,无端秀JS

查看全部评分

RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1859
在线时间
396 小时
注册时间
2014-7-7
帖子
264

开拓者

6
发表于 2019-8-25 13:54:43 | 只看该作者
本帖最后由 kklt 于 2019-8-25 13:55 编辑

迭代器(Iterator)

迭代作动词时指: 反复、重复,对应英文 iterate ;作名词时对应英文 iteration 。根据前述字源,迭代器意为一种会反复做相同工作的事物,对应英文 iterator 。在 Ruby 中,每个迭代器都是一种个体的方法。

语法:

個體.迭代器 do |參數|
   ...程式區塊...
end

個體.送代器 { |參數|
   ...程式區塊...
}

范例:

5.times do |c|
   puts c
end

如上例,times 是一个迭代器(iterator),会做 5 次迭代(iteration)。

撰写程式码时,常有各式各样的情形需要循环处理。在 C 语言中,我们用 for 或 while。例如:

for (str = "abcdefg"; *str != '\0'; str++) {
    /* 處理動作 */
}

C 语言的 for(...) 语法帮助我们建立抽象的循环动作,但仍要求程序员了解字串内部结构的细节,才能写出测试 *str 是否为 null 字元的程式码。这使得 C 语言感觉像是低阶语言。高阶语言应提供更有弹性的迭代。看看下列的 sh 指令手稿的做法:

#!/bin/sh
for i in *.[ch]; do
    # ... 針對每一個檔案做某件事
done

yield

我们可将一个程式码区块传递给迭代器,并于迭代器中以 yield 叙述将程式流程转移至该程式码区块。下列范例定义了名为 repeat 的迭代器,它会依据引数所指定之次数,反复执行程式码区块内容。

def repeat(num)
     while num > 0
         yield
         num -= 1
     end
end
l
repeat(3) { puts "foo" }

=> foo
      foo
      foo


摘自https://zh.wikibooks.org/wiki/Ru ... D%E4%BB%A3%E5%99%A8(Iterator)
take is cheap
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-23 13:13

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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