Please note, this is a STATIC archive of website www.tutorialspoint.com from 11 May 2019, cach3.com does not collect or store any user information, there is no "phishing" involved.
import Foundation
import Glibc
// Функция принимает функцию и возвращает массив [Int].
// Входная функция принимает Int и возвращает Bool.
// Принимает массив кошелька и функцию в названии которой указано какие купюры
// нужно отфильтровать.
func handle(wallet: [Int], closure: (Int) -> Bool) -> [Int] {
var returnWallet : [Int] = []
for banknot in wallet {
if closure(banknot) {
returnWallet.append(banknot)
}
}
return returnWallet
}
// 1) Вариант с созданием отдельных функицй для каждого фильтра
func compare100(banknot: Int) -> Bool {
return banknot == 100
}
func compare1000(banknot: Int) -> Bool {
return banknot == 1000
}
var wallet = [10, 50, 100, 100, 5000, 100, 50, 50, 1000, 100, 500]
print(handle(wallet: wallet, closure: compare100))
print(handle(wallet: wallet, closure: compare1000))
// 2) Вариант с замыкающим выражением
let a = handle(wallet: wallet, closure: {(banknot: Int) -> Bool in
return banknot >= 1000
})
print(a)
// 3) Укороченный вариант с замыкающим выражением
let b = handle(wallet: wallet, closure: {banknot in
return banknot == 100
})
print(b)
// 4) Ещё более укороченный вариант с замыкающим выражением
let c = handle(wallet: wallet, closure: {banknot in banknot <= 50})
print(c)
// 4) Ещё более укороченный вариант с замыкающим выражением c использованием
// сокращённых имён доступа
let d = handle(wallet: wallet, closure: {$0 <= 10})
print(d)
// 5) Если входной параметр-функция последний, его можно вынести за скобки
let e = handle(wallet: wallet) {$0 == 500}
print(e)
// Вариант с более сложным фильтром (ищем только 10ки и 50ки)
let successBanknotes = [10, 50]
let f = handle(wallet: wallet)
{banknot in
for number in successBanknotes {
if number == banknot {
return true
}
}
return false
}
print(f)
Advertisements
We use cookies to provide and improve our services. By using our site, you consent to our Cookies Policy.
AcceptLearn more