2013-10-09 20 views
0

我想使用Python的鐵超載,但似乎它不工作:如何在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)

非常感謝!

+0

可能重複[函數重載在Python中:Missing](http://stackoverflow.com/questions/733264/function-overloading-in-python-missing) –

+0

這可能會幫助你:http://stackoverflow.com/questions/7113032/overloaded-功能合蟒 – jowa

回答

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 

對於課程的實際使用情況,你可以使用默認設置爲1定義numtimes:中

def foo(action, numtimes=1): 
    # whatever 
相關問題