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

Project1

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

[已经解决] 【语法问题】关于alias和ruby stack level too deep

[复制链接]

Lv5.捕梦者

梦石
24
星屑
7497
在线时间
249 小时
注册时间
2020-12-4
帖子
306

极短24获奖极短23获奖极短22获奖

跳转到指定楼层
1
发表于 2022-6-22 16:21:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 纯属小虫 于 2022-6-22 16:27 编辑

最近在给自己的工程打各种补丁mod
于是写了很多附加型的脚本
用了很多alias来修改已有的定义

今天编写测试的时候遇见了这样一个错误
ruby stack level too deep

筛选了BUG之后,发现问题出在alias上
我在同样class中
出现了两个一样的
   alias B_old  B
       def B
           B_old
           other_code
        end


当我把两个定义的  B_old 其中一个变成另一个名字  B_old_x
这个问题就消失了

我原以为的 alias 是把脚本前文出现的这个定义换掉一个名字
但现在看来,好像是我理解出错了


下面放一个错误范例:
RUBY 代码复制
  1. def name
  2.   p "你好"
  3. end
  4.  
  5. alias name_old name
  6. def name
  7.   name_old
  8.   p "你好"
  9. end
  10.  
  11. alias name_old name
  12. def name
  13.   name_old
  14.   p "你好"
  15. end
  16.  
  17. name
  18.  
  19. >>>>>>> ruby stack level too deep


有大佬可以详细说一说 alias 的正确用法以及运行原理吗?

或者科普一下,那些会修改之前已有定义的,mod补丁型脚本应该怎么写比较规范,不容易出BUG~~

Lv5.捕梦者 (版主)

梦石
1
星屑
23994
在线时间
3339 小时
注册时间
2011-7-8
帖子
3926

开拓者

2
发表于 2022-6-22 17:17:04 | 只看该作者
本帖最后由 guoxiaomi 于 2022-6-22 17:19 编辑

简单地说就是不要重复使用相同的 alias。。。

评分

参与人数 2星屑 +50 +1 收起 理由
RyanBern + 50 认可答案
纯属小虫 + 1 塞糖

查看全部评分

熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
24
星屑
7497
在线时间
249 小时
注册时间
2020-12-4
帖子
306

极短24获奖极短23获奖极短22获奖

3
 楼主| 发表于 2022-6-22 17:21:11 | 只看该作者
guoxiaomi 发表于 2022-6-22 17:17
简单地说就是不要重复使用相同的 alias。。。


看来有必要把每个mod里的alias用一个独特的名字了
之前一直以为是覆盖前者...现在想想太天真了

点评

可以参照tarxod的core插件写def_before / def_after:https://github.com/taroxd/RGSS/blob/master/rgss3/taroxd_core.rb  发表于 2022-6-22 18:59
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-24 17:05

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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