0

Iron Python でオーバーロードを使用したかったのですが、機能していないようです:

import sys
import clr

def  af(a, b):
     c = a+b
     print c
     return c
def af(j):
  y = j*j
  print y
  return y

 af(6,7)
 af(5)

エラーが表示されます =\ オーバーロードを使用する方法はありますか? 私の目的は、関数を書くことです:foo(doAction,numTimes) デフォルトでは、使用する場合foo(action):一度実行するか、次のように記述します:foo(action,6)

どうもありがとう!!!

4

1 に答える 1

1

IronPython は CLR で実行される可能性がありますが、C# にはなりません。どの種類の Python でも、関数を定義できるのは一度だけです。関数を定義することは実際には名前に割り当てるだけなので、コードでは関数をafに割り当て、次に別の関数を同じ名前に割り当てるので、最初の関数は単純に破棄されます。

Python でこれを行う方法は、デフォルトの引数を使用することです。

def aj(a, b=None):
    if b is not None:
        result = a + b
    else:
        result = a * a
    print result
    return result

numtimesもちろん、実際のユースケースでは、デフォルトの 1 で定義できます。

def foo(action, numtimes=1):
    # whatever
于 2013-10-09T08:47:04.963 に答える