我知道,在第一線,我們可以使用lessThanTen(編號:智力)更換(INT),並contidion意味着一個標籤,但在第三行:*你爲什麼不我們使用如果條件:(項目)更換如果條件(項目),因爲條件是人亞伯。 快速教程中的'條件'是什麼意思?
1
A
回答
3
condition
是供給到hasAnyMatches
需要被稱爲以產生一個布爾值的Bool
-returning閉合。閉包採用類型爲Int
的單個參數,它與list
的元素類型相同。因此,我們致電提供的(Int) -> Bool
封閉在每個項目,並在案件condition
應用於一個項目返回true
,我們削減了list
短項目的遍歷和返回true
從函數。
使用函數式編程tecniques,我們可以利用上list
一個reduce
操作來壓縮hasAnyMatches
實現:
func hasAnyMatches(list: [Int], condition: (Int) -> Bool) -> Bool {
return list.reduce(false) { $0 || condition($1) }
}
,或者甚至更好(允許出口return
在原來的循環),如所描述通過@Hamish在初級講座的意見,使用contains
func hasAnyMatches(list: [Int], condition: (Int) -> Bool) -> Bool {
return return list.contains(where: condition)
}
用法示例(謝謝!):
func lessThanTen(number: Int) -> Bool {
return number < 10
}
var numbers = [20, 19, 7, 12]
print(hasAnyMatches(list: numbers, condition: lessThanTen)) // true
6
條件是,你在這個方法接收的方法,如果你看一下該方法的簽名:
condition: (int) -> Bool
這意味着您收到一個可以使用的參數來調用條件的Int類型,並會返回一個布爾值。在任何地方,裏面:
hasAnyMatches
你,如果你看一下方法調用者可以使用
condition(anyInt)
現在:
hasAnyMatches(list: numbers, condition: lessThanTen)
所以,你說'hasAnyMatches'上的'條件'將會'lessThanTen'。這意味着,在您的
if condition(item)
什麼是真正的情況是:
if lessThanTen(item)
我希望它使人們更清楚!
相關問題
- 1. 單|是什麼?意思是快速
- 2. 條件是什麼意思?
- 3. Apple CoreData教程:'moc = ...'是什麼意思?
- 4. IIS快速失敗保護中的「失敗」是什麼意思?
- 5. 是什麼意思:是什麼意思?
- 6. 這個條件是什麼意思?
- 7. 這個條件是什麼意思?
- 8. 這是什麼意思,Git push不能快速合併?
- 9. 線程是什麼意思?
- 10. 「??」是什麼意思?在迅速?
- 11. 如果條件不是陳述,「條件」是什麼意思?
- 12. 沒有條件的條件是什麼意思?
- 13. 是什麼意思,在Python中是什麼意思?
- 14. 這2行代碼是什麼意思(*來自教程)?
- 15. MNIST tensorflow教程是什麼意思與matmul翻轉技巧?
- 16. 文件中的「^ @」是什麼意思?
- 17. 這是什麼意思? C編程沒有條件
- 18. 這條命令是什麼意思?
- 19. 這條線是什麼意思
- 20. 這條PHP線是什麼意思?
- 21. 這條ASM線是什麼意思?
- 22. 這條命令是什麼意思
- 23. 這條JQUERY是什麼意思?
- 24. SURF的min_dist和max_dist是什麼意思,FlannMatcher是什麼意思
- 25. 「?」是什麼意思?調用jsp的標記是什麼意思?
- 26. %{}是什麼意思?
- 27. '#'是什麼意思?
- 28. 「?」是什麼意思?
- 29. #{...}是什麼意思?
- 30. || =是什麼意思?
請注意,在這種情況下使用'contains(where:)'會比'reduce'更好,因爲它會在發現'true'時早返回(你也可以說'return list.contains(where:condition )')。儘管我們現在真的已經達到了'hasAnyMatches'函數從實際角度來說完全是冗餘的地步;) – Hamish
@Hamish真的,完全忘了'contains',在這裏更好,也更好地反映了原來的'for'循環。作爲一個方面說明,我相信'減少'也會導致短路,我記得對此進行了測試(但是使用了一些不尋常的布爾計算),但自然'contains'更適合於這個目的,這要感謝反饋! – dfri
沒問題:)只是好奇,你是怎麼想'減少'到短路?我能想到的唯一方法就是定義一個自定義的'Error'類型,並將其從傳遞給'reduce'的函數中拋出(然後在調用者端捕獲並返回) – Hamish