【发布时间】:2014-10-18 12:32:06
【问题描述】:
我有一个声明了许多实例方法的类
class User < Group
def get_name
end
def show_profile
end
def get_task(task_id)
#some logic
end
end
我想从一个模块中调用其中一些方法。我可以用 Include 语句来做到这一点。
include Users 引入了 User 类的所有方法。在这种情况下,我只想要 get_task 并且明确不想要 get_name、show_profile 等。
我有一个 Tasks 模块,它也有一组方法,其中一个方法调用 User 类的 get_task 方法。
module Tasks
class Project
def design
tid = 12
design_task = get_task(tid)
end
end
end
如何在不包括该类的其他不必要方法的情况下实现这一点。请帮忙。
【问题讨论】:
-
你不包括一个类,你包括一个模块。你到底想做什么?
-
是的.. 你是对的。对不起..我想要实现的是从模块 Tasks::Project#design 方法调用 get_task 方法..对不起。刚开始学习 ruby 元编程。所以想出了这种场景。
-
我想你误解了我,你的代码对于模块任务是正确的,现在不是。我的评论是关于您的这些行: include Users 引入了 User 类中的所有方法。在这种情况下,我只想要 get_task 并且明确不想要 get_name、show_profile 等。
-
我正在尝试理解其中一个应用程序的代码。它的代码如上。模块任务;结束然后声明类。到目前为止,我只看到了像我用来编码模块任务类项目结束的那个。我不确定它与前一个有什么不同。
-
module Tasks;end表示您在创建模块任务后立即结束了它的范围。因此,类 Project 无法访问为:Task::Project,就像您在之前的评论中发布的那样。这就是它在首次更改和新更改之间的区别。
标签: ruby metaprogramming