Могу ли я использовать именованные и необязательные аргументы в ironpython


Я надеюсь, чтобы загрузить .чистые DLL-файл в установить IronPython.

Но одна из статических функций в .NET dll, имеет некоторые именованные и необязательные Аргументы.

Например, рисовать (вес: w, высота: h, площадь=1)

Только можно ли использовать полные аргументы?

2 3

2 ответа:

Именованные и необязательные параметры полностью поддерживаются. .NET имеет их в течение длительного времени для VB.NET поддержка и поэтому IronPython поддерживал этот же способ делать их с самого начала. Новый синтаксис C# сопоставляется с теми же базовыми метаданными, что и старая поддержка VB.

Для вызова вы используете f (x = 42), который является синтаксисом именованных параметров Python. Для необязательных параметров вы можете просто оставить их. В вашем примере вы, вероятно, можете нарисовать(вес, рост) и оставить область. Или ты можете позвонить в Вт/ вес и рост как именованные параметры и оставить там.

Базовыми метаданными .NET, которые ищет IronPython, являются либо OptionalAttribute, либо DefaultParameterValueAttribute. Для необязательного мы передаем в default (T), если тип не является object, в этом случае мы передаем в Missing.Значение. Это обычно совпадает с тем, как отражение вызывает эти API.

Как говорит этот вопрос SO, новые именованные аргументы .NET не поддерживаются в IronPython (который использует именованные аргументы для конструкторов, которые он вызывает для задания свойств).

Для необязательных, как этот пост говорит,

Для необязательных параметров, таких как аргументы индексатору адресов, вы может использовать отсутствующих.Значение для использования по умолчанию.

После, конечно, from System.Reflection import Missing.