Project1

标题: 雙回圈腳本的throw指令執行方式 [打印本页]

作者: sai90306    时间: 2012-6-2 01:03
标题: 雙回圈腳本的throw指令執行方式
本帖最后由 sai90306 于 2012-6-2 01:07 编辑

雙回圈腳本的執行方式
如這個例子
    #迴圈1
     #區域零
    catch(:loop1){
     #區域一
      loop do
     #區域二
          end
     #區域三
          catch(:loop2){
            #迴圈2
            #區域四
            loop do
            #區域五
              if Input.trigger?(Input::C)
                returnval = @sort_window.index
                throw :loop1
              end
              if Input.trigger?(Input::B)
             #區域六
                throw :loop2
               
              end            
            end
          }
        end
          #區域七
          if Input.trigger?(Input::B)
          #區域八
          throw :loop1
          break
          end
          #區域九
        end
          #區域十
      end
    }

請問在雙層迴圈中執行 throw :loop1或 throw :loop2時會分別從哪個區域開始執行呢?
我認為好像分別是在區域一和區域四...不過實驗結果似乎不是這樣子...我混亂了@@
dsu_plus_rewardpost_czw
作者: orzfly    时间: 2012-6-2 01:38
  1. # 1
  2. loop do
  3.   # 2
  4.   catch(:loop)
  5.   {
  6.     # 3
  7.     throw :loop
  8.     # 4
  9.   }
  10.   # 5
  11. end
  12. # 6
复制代码
throw 只会跳到对应的 catch 外一点点,即 # 5 的位置。

即你代码里的 throw :loop1 会跳到 #區域七 上一行的 end 前, throw :loop2 会跳到代码末端。




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