Как устранить неоднозначность, когда аргумент нулевой?

Предел связан с тем, как скомпилированный байт-код рассматривает вызов функции с аргументами позиции и / или аргументами ключевого слова.

Байт-код op проблемы - CALL_FUNCTION, который несет op_arg, который равен 4 байтов в длину, но используются два младших байта. Из них наиболее значимый байт представляет количество аргументов ключевого слова в стеке и наименее значимый байт - количество позиционных аргументов в стеке. Следовательно, вы можете иметь не более аргументов ключевого слова 0xFF == 255 или 0xFF == 255.

Этот предел не применяется к *args и **kwargs, поскольку вызовы с этой грамматикой используют optecode ops CALL_FUNCTION_VAR, CALL_FUNCTION_KW и CALL_FUNCTION_VAR_KW в зависимости от подписи. Для этих кодов операций стек состоит из итерации для *args и dict для **kwargs. Эти элементы передаются непосредственно получателю, который разворачивает их по мере необходимости.

23
задан Poma 28 October 2010 в 15:00
поделиться

3 ответа

Привести null к типу:

Func((Class1)null);
11
ответ дан Pieter van Ginkel 28 October 2010 в 15:00
поделиться

Использование as для отливки делает его немного более читаемым с той же функциональностью.

Func(null as Class1);
6
ответ дан ShawnFeatherly 28 October 2010 в 15:00
поделиться

Вы должны иметь возможность приводить null к любому из них, так же, как к переменной Func((Class1)null).

3
ответ дан Dave Downs 28 October 2010 в 15:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: