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.
Tutorialspoint

exersice 13.01 Closers (Wallet Sort)

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
Loading...

We use cookies to provide and improve our services. By using our site, you consent to our Cookies Policy.