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

Project1

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

[已经解决] 雙回圈腳本的throw指令執行方式

[复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
461 小时
注册时间
2008-11-19
帖子
607
跳转到指定楼层
1
发表于 2012-6-2 01:03:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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時會分別從哪個區域開始執行呢?
我認為好像分別是在區域一和區域四...不過實驗結果似乎不是這樣子...我混亂了@@

Lv6.析梦学徒

Fuzzy Ginkgo
Taciturn Knight

梦石
0
星屑
60819
在线时间
1934 小时
注册时间
2010-6-26
帖子
1605

烫烫烫开拓者

2
发表于 2012-6-2 01:38:29 | 只看该作者
  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 会跳到代码末端。

点评

感謝!豁然開朗!  发表于 2012-6-2 01:48
我的言论只代表我个人的观点,不代表雇主及/或任何第三方的立场。
Opinions expressed are solely my own and do not express the views or opinions of my employer and/or any third parties.
捐赠 | GitHub
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-30 01:48

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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