-4
A
回答
2
这是不可能的,或者至少它应该如果您使用的语言是值得的任何东西。你正在寻求一种函数来返回两种不同的类型,这就是一场灾难。
- 有时它应该返回一个函数,它的下一个号码添加
- 其他时候,它应该返回以前输入的总和。
什么?退一步,问自己是什么样的设计。你需要一些方法来通知函数,你完成了输入,现在你需要计算的值。
想想看,函数可能看起来像这样
def add (sum):
print(sum)
return lambda x: add(sum + x)
add(1)(3)(4)(5)(10)(20)
# 1
# 4
# 8
# 13
# 23
# 43
# => None
但有没有办法让函数知道,除非你改变的API以某种方式返回的最终值。
你可以改变API返回计算值,当用户进入一个0
什么的。好主意对吗?非常聪明。
def add (x):
def loop(sum, x):
if x == 0:
return sum
else:
return lambda x: loop(sum + x, x)
return loop(0, x)
print(add(1)(3)(4)(5)(10)(20)(0))
# 42
嘿,看,它的工作原理@罗林聪明的代码失败。所有没有加入一些花样的一类
print(add(5)(10)(20)(0) + add(5)(10)(20)(0))
# 70
但尽管如此,这是垃圾代码。没有一个设计良好的功能应该像这样。
或者,如果与正在疯狂的内容,建立像@ Rawing的回答表明,一类。
3
你可以创建一个类,像这样:
class add(object):
def __init__(self, value):
self.value= value
def __call__(self, value):
self.value+= value
return self
def __repr__(self):
return str(self.value)
print add(5)(10)(20)
# output: 35
-1
你可以做的是这样的:
class add(object):
def __init__(self, val):
self.val= val
def __call__(self, val=None):
if not val:
return self.val
self.val += val
return self
add(5)(10)()
>>> 15
相关问题
- 1. 如何获取任意数目的括号之间的文本?
- 2. 添加的功能的任意数量成函数手柄MATLAB
- 3. 如何添加任务优先功能
- 4. 花括号的功能
- 5. 我如何添加用户/数字从PHP的星号?
- 6. 如何在括号内查看功能
- 7. 是否有任何程序添加Clojure的括号?
- 8. 如何在U-Boot中添加用户定义的功能?
- 9. 功能,无需括号()
- 10. 的Eclipse:对“括号匹配突出显示”功能,添加新的字符
- 11. 如何从Firebase Cloud功能中删除用户数据(任何数据)?
- 12. Qt的 - 如何获得一个任意用户的“TEMP”目录?
- 13. 如何添加计数器功能?
- 14. 没有大括号的箭头功能
- 15. 带括号的C++无功能typedef
- 16. ES6带括号的箭头功能
- 17. 添加功能的图像wp_nav_menu项目
- 18. Django用户模型,添加功能
- 19. hudson插件:添加多用户功能?
- 20. SML:严格的加括号功能类型的方法
- 21. 在servlet中添加用户计数器的功能
- 22. 将任意控制,功能
- 23. 如何调用从共同帮助任何型号的功能笨
- 24. 功能添加类网页用户目前对
- 25. 如何在另一个项目中添加调用某个函数的功能
- 26. 如何添加真或假的功能
- 27. 如何将评论添加到任意数量的行?
- 28. 我该如何添加成功功能?
- 29. 如何为功能和功能参数添加说明?
- 30. 如何...将客户端功能添加到回发的按钮?
为什么不'总和([5,10,20])'? – 2016-07-22 07:49:33
为什么不加'(5,10,20)'? (虽然我更喜欢@FullName'sum'选项) – MariusSiuram
也,我怀疑这个问题是有关的[XY问题(http://meta.stackexchange.com/questions/66377/what-is-the-xy - 问题) – MariusSiuram