如何在ruby中实现以下要求?
我尝试了下面的代码来实现上述结果。但我不知道如何在块中传递不同的参数?或者我如何才能达到上述效果如何在ruby中实现以下要求?,ruby,configuration,arguments,block,metaprogramming,Ruby,Configuration,Arguments,Block,Metaprogramming,我尝试了下面的代码来实现上述结果。但我不知道如何在块中传递不同的参数?或者我如何才能达到上述效果 @custom_column = CustomColumns.configure :projects do |user, tag| columns = ModelName.method_name(user,tag) end @custom_column.columns should return ["title", "description"] CustomColumns.projects.c
@custom_column = CustomColumns.configure :projects do |user, tag|
columns = ModelName.method_name(user,tag)
end
@custom_column.columns should return ["title", "description"]
CustomColumns.projects.columns should return ["title", "description"]
@custom_column1 = CustomColumns.configure :groups do |domain|
columns = ModelName.method_name(domain)
end
@custom_column1.columns should return => ["desctiption", "created_at"]
CustomColumns.groups.columns should return => ["desctiption", "created_at"]
你想要的是不可能的。foo=bar始终被解释为分配给局部变量。它永远不会调用foo=setter。您必须提供一个显式接收器。对于初学者来说,您的block似乎需要参数,但您不能使用block.call生成任何参数。e、 g.在第一个示例中,它期望将用户和标记发送到块,在第二个示例中,它期望域。但是还有更多的可用。一旦你了解了它是如何工作的,它可能会帮助你弄明白这一点。我所要求的是可以实现的还是不能实现的?还是我遗漏了什么?有没有其他方法可以实现这一点?处理上述情况的最佳和首选方法是什么?目前尚不清楚上述情况是什么。你扔掉了一堆没有解释的代码,问人们是否可以运行这些代码,答案是否定的。如果你想知道人们是否可以设计出不同的代码,你首先必须解释这是什么。
module CustomColumns
class Rule
attr_accessor :column_for, :columns
end
class << self
attr_accessor :rule
end
def self.configure(column_for, &block)
@column_for = column_for
@columns = block.call
end
end