Project1

标题: 请问:begin结构是什么意思? [打印本页]

作者: kvkv97    时间: 2023-12-7 21:11
标题: 请问:begin结构是什么意思?
请问:begin结构是什么意思?

  #--------------------------------------------------------------------------
  # ● 转到输入下一个角色的命令
  #--------------------------------------------------------------------------
  def phase3_next_actor
    # 循环
    begin
      # 角色的明灭效果 OFF
      if @active_battler != nil
        @active_battler.blink = false
      end

      # 最后的角色的情况/
      if @actor_index == $game_party.actors.size-1
        # 开始主回合
        start_phase4
        return
      end
      # 推进角色索引/起初,@actor_index=-1
      @actor_index += 1
      @active_battler = $game_party.actors[@actor_index]
      @active_battler.blink = true

    end
    # 设置角色的命令窗口
    phase3_setup_command_window
  end

请问,这里的begin是 什么意思,有什么用途?
作者: srwjrevenger    时间: 2023-12-7 23:40
遇到特定的,没有 def 过的单词,先去查查对应版本的帮助手册嘛

begin
例子:

begin
  do_something
rescue
  recover
ensure
  must_to_do
end

语法:

begin
  表达式 ..
[rescue [error_type,..] [then]
  表达式 ..]..
[ensure
  表达式 ..]
end

若给出了 rescue 部分(可以有若干个)的话,就可以在发生异常时捕捉到它。若存在与异常类型一致的 rescue 部分的话,就执行 rescue 的内容。
发生异常时,可以使用内部变量 $! 来查看异常的情况。

若 error_type 被省略,则将捕捉 StandardError 的子类中的所有异常。
Ruby 的大部分内部异常是 StandardError 的子类。具体请参考 内部异常类。

在 rescue 部分中,error_type 与普通的参数一样接受计算,若符合的话就执行相应部分的内容。
若 error_type 的计算值既非类又非模块的话,则引发 TypeError 异常。

若存在 ensure 部分的话,则在 begin 表达式结束之前一定会计算它。

begin 表达式会返回其自身或 rescue 部分最后的计算结果。





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