我想在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 :(得分: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