Project1

标题: 【语法问题】关于alias和ruby stack level too deep [打印本页]

作者: 纯属小虫    时间: 2022-6-22 16:21
标题: 【语法问题】关于alias和ruby stack level too deep
本帖最后由 纯属小虫 于 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~~
作者: guoxiaomi    时间: 2022-6-22 17:17
本帖最后由 guoxiaomi 于 2022-6-22 17:19 编辑

简单地说就是不要重复使用相同的 alias。。。
作者: 纯属小虫    时间: 2022-6-22 17:21
guoxiaomi 发表于 2022-6-22 17:17
简单地说就是不要重复使用相同的 alias。。。


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




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