您可以为类动态定义类方法,如下所示:
class Foo
end
bar = %q{def bar() "bar!" end}
Foo.instance_eval(bar)
Run Code Online (Sandbox Code Playgroud)
但是你如何做相反的事情:删除/取消定义一个类方法?我怀疑Module remove_method和undef_method方法可能可以用于此目的,但我在谷歌搜索几个小时之后看到的所有示例都是用于删除/取消定义实例方法,而不是类方法.或者也许你可以传递一种语法instance_eval来做到这一点.
提前致谢.
我需要通过 并行进行未知数量的异步调用Promise.all。与此类似的东西:
let externalCalls = [call1()];
if (someCondition1) {
externalCalls.push(call2());
}
if (someCondition2) {
externalCalls.push(call3());
}
Run Code Online (Sandbox Code Playgroud)
然后externalCalls将被传递到,Promise.all以便它们可以并行运行。
理想情况下,我想使用结果的解构,以便我可以按名称引用结果,即
const [call1, call2, call3] = await Promise.all(externalCalls);
Run Code Online (Sandbox Code Playgroud)
我知道call1它会永远在那里,但我不知道是否call2或call3将会在那里。所以我想定义动态const调用的结果await Promise.all以获得正确的属性,这可能吗?或者我是否有一个长度未知的通用结果数组,然后必须检查结果中的每个项目以查看哪个调用产生了它?