【问题标题】:Can I use Named and Optional Arguments in ironpython我可以在 Ironpython 中使用命名参数和可选参数吗
【发布时间】:2011-03-24 00:50:52
【问题描述】:

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

但是 .net dll 中的静态函数之一,有一些命名和可选参数。

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

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

【问题讨论】:

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


    【解决方案1】:

    完全支持命名参数和可选参数。 .NET 长期以来一直支持 VB.NET,因此 IronPython 从一开始就支持相同的方式来实现它们。新的 C# 语法映射到与旧 VB 支持相同的底层元数据。

    调用你使用 f(x = 42),它是 Python 的命名参数语法。对于可选参数,您可以将它们排除在外。在您的示例情况下,您可能可以执行 Draw(weight, height) 并将 Area 排除在外。或者您可以将 w/ weight 和 height 作为命名参数调用,并将 Area 省略。

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

    【讨论】:

      【解决方案2】:

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

      对于可选的,正如this post 所说,

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

      当然是from System.Reflection import Missing之后。

      【讨论】:

        猜你喜欢
        • 2011-02-08
        • 2016-12-20
        • 1970-01-01
        • 2013-08-06
        • 2014-11-02
        • 1970-01-01
        • 2017-01-28
        • 2013-09-10
        • 1970-01-01
        相关资源
        最近更新 更多