我可以在ironpython中使用Named和Optional Arguments吗?

时间:2010-08-02 04:28:26

标签: .net ironpython optional-parameters named-parameters

我希望在ironpython中加载.net dll。

但是.net dll中的一个静态函数有一些Named和Optional Arguments。

喜欢,画(重量:w,高度:h,面积= 1)

我只能使用完整的参数吗?

2 个答案:

答案 0 :(得分:6)

完全支持命名和可选参数。 .NET已经有很长一段时间用于VB.NET支持,因此IronPython从一开始就以同样的方式支持它们。新的C#语法映射到与旧VB支持相同的底层元数据。

为了调用你使用f(x = 42)这是Python的命名参数语法。对于可选参数,您可以将它们排除在外。在您的示例中,您可以执行绘制(体重,身高)并将区域保留。或者您可以将w / weight和height称为命名参数,并将Area保留。

IronPython寻找的底层.NET元数据是OptionalAttribute或DefaultParameterValueAttribute。对于可选,我们传递默认值(T),除非类型是对象,在这种情况下我们传递Missing.Value。这通常与反射调用这些API的方式相匹配。

答案 1 :(得分:0)

正如this SO question所说,IronPython不支持.NET的新命名参数(它使用命名参数来调用它来设置属性)。

对于可选项,如this post所述,

  

用于可选参数,例如   您是地址索引器的参数   可以使用Missing.Value来使用   默认值。

当然,from System.Reflection import Missing