-1

この不可解なエラー メッセージが表示されるのではなく、method_missing最初のパラメーターを as で呼び出すと、次のようになります。'string':symbol

BasicObject.send(:method_missing, 'any-method')
ArgumentError: no id given
from (pry):3:in `method_missing'

method_missingのソースコードを見ると

static VALUE
rb_method_missing(int argc, const VALUE *argv, VALUE obj)
{
    rb_thread_t *th = GET_THREAD();
    raise_method_missing(th, argc, argv, obj, th->method_missing_reason);
    UNREACHABLE;
}

エラーメッセージには何もありませんArgumentError: no id given。それはどこから来たのですか?

4

1 に答える 1

2

raise_method_missing()その引数エラーが発生します:

static void
raise_method_missing(rb_thread_t *th, int argc, const VALUE *argv, VALUE obj,
                     int last_call_status)
{
    // ...
    if (argc == 0 || !SYMBOL_P(argv[0])) {
        rb_raise(rb_eArgError, "no id given");
    }
    // ...
}
于 2015-09-02T19:44:36.817 に答える