-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