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

Project1

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

alias重定义了怎么办……

 关闭 [复制链接]

Lv1.梦旅人

剑圣

梦石
0
星屑
50
在线时间
122 小时
注册时间
2008-8-31
帖子
778
跳转到指定楼层
1
发表于 2009-3-30 19:36:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
好像战斗中会随机的出现stack level too deep
这样的错误……

ms是alias多次定义一个函数的问题么?
该怎么办呢……
此贴于 2009-4-3 12:39:26 被版主darkten提醒,请楼主看到后对本贴做出回应。
版务信息:本贴由楼主自主结贴~

PC/IOS/Android共享的RM RPG:未名大学

Lv2.观梦者

神隐的主犯

梦石
0
星屑
299
在线时间
271 小时
注册时间
2008-2-22
帖子
7691

贵宾

2
发表于 2009-3-30 20:27:58 | 只看该作者
自己把那些同名方法整合在一起,不使用 alias 即可

《天空之城 —— 破碎的命运》
回复 支持 反对

使用道具 举报

Lv1.梦旅人

剑圣

梦石
0
星屑
50
在线时间
122 小时
注册时间
2008-8-31
帖子
778
3
 楼主| 发表于 2009-3-30 21:25:05 | 只看该作者
呃不太懂…
比如两个脚本里面有:alias 函数A 函数C和alias 函数B 函数C…这样的话应该改哪个呢…?

PC/IOS/Android共享的RM RPG:未名大学
回复 支持 反对

使用道具 举报

Lv2.观梦者

神隐的主犯

梦石
0
星屑
299
在线时间
271 小时
注册时间
2008-2-22
帖子
7691

贵宾

4
发表于 2009-3-30 21:39:07 | 只看该作者
语法:

alias 新方法名 旧方法名

给方法或全局变量添加别名。可以给方法名指定一个标识符或 Symbol(不能写 obj.method 这样的表达式)。 alias 的参数不会被计算。

给方法添加别名时,别名方法将继承此刻的原始方法。此后,即使原始方法被重新定义,别名方法仍然保持着重定义前的老方法的特性。若您改变了某方法的内容后,又想使用修改前的方法时,别名会非常有用

F1 是这么说的。

旧的方法相当于就与之前的方法定义。

比如
   class A
      def abc
        @a = 1
      end
   end
   class A
      alias old_abc abc
      def abc
        old_abc
        @a += 1
      end
   end

这里的 alias old_abc abc 中的 old_abc 就是之前的方法。

整合的话,就变成
   class A
      def abc
        @a = 1
        @a += 1
      end
   end

这个样子了。

因为每调用一次 alias 的话,都会先把方法地址压栈,所以多调用 alias 的话,堆栈就容易溢出了。(这个是个人理解,可能有误,不过原因大概是这个)

就是这样的喵~~~~~~{/hx}

《天空之城 —— 破碎的命运》
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
2 小时
注册时间
2007-9-4
帖子
251
5
发表于 2009-6-12 08:00:00 | 只看该作者
这个错误原因是由于循环次数过多导致的,与alias无关,请检查是不是程序中有死循环
偶尔出现说明死循环可能和某个条件分歧有关
[fly][/fly]
回复 支持 反对

使用道具 举报

Lv2.观梦者

神隐的主犯

梦石
0
星屑
299
在线时间
271 小时
注册时间
2008-2-22
帖子
7691

贵宾

6
发表于 2009-3-31 03:02:38 | 只看该作者
以下引用新月の道化师于2009-3-30 19:02:00的发言:

这个错误原因是由于循环次数过多导致的,与alias无关,请检查是不是程序中有死循环
偶尔出现说明死循环可能和某个条件分歧有关


循环貌似不占用堆栈的吧?




另外,Scene 类里都有一个死循环的说。。。

《天空之城 —— 破碎的命运》
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
2 小时
注册时间
2007-9-4
帖子
251
7
发表于 2009-3-31 07:03:16 | 只看该作者
以下引用火焰猫燐于2009-3-30 19:02:38的发言:
<BR><SCRIPT language="javascript">
   
strCont="[quote]以下引用新月の道化师于2009-3-30 19:02:00的发言:\r\n\r\n这个错误原因是由于循环次数过多导致的,与alias无关,请检查是不是程序中有死循环\r\n偶尔出现说明死循环可能和某个条件分歧有关 \r\n
\r\n\r\n循环貌似不占用堆栈的吧?\r\n\r\n
\r\n\r\n另外,Scene 类里都有一个死循环的说。。。";
document.write(ubb.spbShowTopic(strCont,1));
//-->
</SCRIPT><BLOCKQUOTE class="CodeBorder">以下引用新月の道化师于2009-3-30 19:02:00的发言:<BR>
<BR>
这个错误原因是由于循环次数过多导致的,与alias无关,请检查是不是程序中有死循环<BR>
偶尔出现说明死循环可能和某个条件分歧有关 <BR>
</BLOCKQUOTE><BR>
<BR>
循环貌似不占用堆栈的吧?<BR>
<BR>
<HR noshade="" size="1" color="#dddddd"><BR>
<BR>
另外,Scene 类里都有一个死循环的说。。。

<BR><BR><FONT color="red">[本贴由作者于 2009-3-30 19:15:04 最后编辑]</FONT>
[/quote]
scene的loop是可以通过break跳出的
偶表达错了,偶是说方法的递归调用无法跳出时。。。
$abc = 0
class Test
  def meth1
    $abc += 2
    meth2
  end
  def meth2
    $abc += 2
    meth1
  end
end

a = Test.new
a.meth1
[fly][/fly]
回复 支持 反对

使用道具 举报

Lv2.观梦者

神隐的主犯

梦石
0
星屑
299
在线时间
271 小时
注册时间
2008-2-22
帖子
7691

贵宾

8
发表于 2009-3-31 07:05:52 | 只看该作者
递归 和 alias 都是一样要使用堆栈,所以~~~~

《天空之城 —— 破碎的命运》
回复 支持 反对

使用道具 举报

Lv1.梦旅人

剑圣

梦石
0
星屑
50
在线时间
122 小时
注册时间
2008-8-31
帖子
778
9
 楼主| 发表于 2009-3-31 07:27:50 | 只看该作者
我先把alias都整合了……看看会不会还出问题……

话说现在才反应过来,alias只是为了写程序方便么= =

PC/IOS/Android共享的RM RPG:未名大学
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
2 小时
注册时间
2007-9-4
帖子
251
10
发表于 2009-4-1 02:24:01 | 只看该作者
以下引用火焰猫燐于2009-3-30 23:05:52的发言:
<BR><SCRIPT language="javascript">
   
strCont="递归 和 alias 都是一样要使用堆栈,所以~~~~";
document.write(ubb.spbShowTopic(strCont,1));
//-->
</SCRIPT>递归 和 alias 都是一样要使用堆栈,所以~~~~

唔,不明白咩,为虾米使用alias会出现堆栈问题?
偶一般都是自己独立写脚本用alias的机会不多不熟悉
[fly][/fly]
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-12 06:11

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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