【发布时间】:2014-01-31 13:53:06
【问题描述】:
如果我定义了一个方法:
def weird_method(first_argument, second_argument)
#code here
end
这样我就可以传递如下参数:1、:digit、'some'、"more"(Fixnum、Symbol、String 等),但是如果我只想传递这个:argument1、argument2 ,我的意思是没有类型并且看起来像局部变量但实际上不是的值。我怎样才能以某种方式接受它们并在方法体中使用它们?
PS:我需要它来实现一个小的 DSL,当块被传递时,它可以在 .isntance_eval 中做那种事情
Something.with_method do
sum 1, 2 #(I can implement it)
play volleyball #(I can NOT implement it)
swim further #(I can NOT implement it)
eat "a lot" #(I can implement it)
end
编辑:
一切都可以进行排球和进一步。我只是举了一个例子。 sum、play、swim、eat 是 Something 类中定义的方法。
【问题讨论】:
-
没有没有类型的值这样的东西,
volleyball在你的例子中是什么?方法?变量? -
如果你想传递另一个变量或方法的名称,那么通常使用
String或Symbol,因为这些可以与@一起使用987654326@、define_method和其他 Ruby 元编程方法。 -
@mechanicalfish sum, play, swin, eat 都是 my Something 中的方法。争论就是问题。
-
这个方法对我来说很奇怪
标签: ruby methods arguments dsl