【问题标题】:Combining OptionsPattern with Pattern Constraints将 OptionsPattern 与模式约束相结合
【发布时间】:2016-11-22 16:11:48
【问题描述】:

我想定义具有命名可选参数的函数,并将这些参数限制为具有特定头的表达式。使用未命名的可选参数很容易做到这一点。例如:

succ1[n_Integer: 0] := n + 1

succ1[]
succ1[4]
succ1[a]

给予

1
5
succ1[a]

作为所需的输出。但是,我不知道如何使用命名参数来实现同样的效果:

Options[succ2] = {n -> 0}
succ2[OptionsPattern[]] := OptionValue[n] + 1

succ2[]
succ2[n -> 4]
succ2[n -> a]

前面的代码将1 + a 作为succ2[n -> a] 的输出。我想要的是将可选参数限制为 n -> _Integer (Rule[n, _Integer]) 以便 n -> a 保持未评估。有什么办法吗?

【问题讨论】:

    标签: wolfram-mathematica wolfram-language


    【解决方案1】:
    Options[succ2] = {n -> 0}
    succ2[OptionsPattern[]] := 
       OptionValue[n] + 1 /; Head[OptionValue[n]] === Integer
    
    succ2[]
    succ2[n -> 4]
    succ2[n -> a]
    

    1

    5

    succ2[n -> a]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-18
      • 1970-01-01
      • 1970-01-01
      • 2012-01-30
      • 1970-01-01
      • 1970-01-01
      • 2014-01-26
      • 2013-04-22
      相关资源
      最近更新 更多