Project1

标题: 请问:有关块问题 [打印本页]

作者: kvkv97    时间: 2021-4-11 15:32
标题: 请问:有关块问题

  #--------------------------------------------------------------------------
  # ● 设置选择项
  #--------------------------------------------------------------------------
  def setup_choices(parameters)
    # choice_max 为设置选择项的项目数
    $game_temp.choice_max = parameters[0].size
    # message_text 为设置选择项
    for text in parameters[0]
      $game_temp.message_text += text + "\n"
    end
    # 设置取消的情况的处理
    $game_temp.choice_cancel_type = parameters[1]
    # 返回调用设置
    current_indent = @list[@index].indent
    $game_temp.choice_proc = Proc.new { |n| @branch[current_indent] = n }
  end
把Proc.new { |n| @branch[current_indent] = n }里面的|n|注释掉,为什么会抱错?
作者: enghao_lim    时间: 2021-4-12 02:36
本帖最后由 enghao_lim 于 2021-4-12 02:37 编辑

n是参数,删掉了自然会报错。
找不到一个简单明了的解释,这个凑合着把,你可以看看什么是proc。
https://www.jianshu.com/p/4ad4517ed6a8

作者: kvkv97    时间: 2021-4-14 15:32
顺便问一下,如果调用块的话,什么情况下可以有参数,什么情况下可以不带参数?
作者: enghao_lim    时间: 2021-4-15 04:49
本帖最后由 enghao_lim 于 2021-4-15 04:54 编辑
kvkv97 发表于 2021-4-14 15:32
顺便问一下,如果调用块的话,什么情况下可以有参数,什么情况下可以不带参数? ...


块是否有参数完全是自己决定的。
  1. a = Proc.new {|n| n * 2 } #=> 有参数
  2. b = a.call(5)
  3. c = Proc.new { 10 * 5 + 6 / 7 } #=> 无参数
  4. b = c.call()
复制代码


其实块和函数相差不大,何时使用主要是经验,非必须。
  1. def dd(n)
  2.   return n * 2
  3. end
  4. b = dd(5)
复制代码

效果会和上面带参数的块相同。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1