是否有可能有一个类方法打印其父类被赋给的变量的名称?例:
课堂考试 def who_am_I_assigned_to 把“#{??}” 结束结束
这= Test.new…
但你必须递归搜索所有的 instance_variables 每个对象。和, 正如卡里指出的那样 ,一次可以将一个对象分配给多个变量。
我正在寻找这种行为的原因是使用变量名称,但也作为数据网格中的位置。因此,如果有一个二维网格,变量名称将像“AA”,“AB”,“BC”等。它知道它的名字,它也知道它的位置。
你所描述的是一个 “远距离行动”反模式 程序的一个部分的更改改变程序的另一部分没有明显的连接。这违反了封装;良好的封装使您只需查看其输入和输出即可了解系统的单个部分。违反封装意味着了解您必须了解的系统的一部分 一切 导致维护噩梦的系统的一部分。现代语言和实践力求尽可能避免这种情况。
例如,变量的名称应该对程序的行为无关紧要。你应该能够安全地执行一个 重命名变量重构 根据对象用户的意义命名变量。在您的示例中,这将改变违反该程序的程序的行为 最小惊讶原则 。
相反,你有一个对象代表你的网格,这将管理网格中节点之间的关系。而不是绕过单个节点,你将绕过网格。
或者每个节点都可以知道他们的相邻节点是谁。这方面的一个例子是传统的 树 , 图形 , 要么 链接列表 结构体。这里的优点是没有固定的位置,数据结构可以在任何方向上增长或缩小。任何节点都可以传递,它知道它在结构中的位置。