let sortedNumbers = numbers.sort { $0 > $1 }
print(sortedNumbers)
Czy ktoś może wyjaśnić, co oznacza $0
i $1
w szybkim tempie?
więcej przykładowych
array.forEach {
actions.append($0)
}
let sortedNumbers = numbers.sort { $0 > $1 }
print(sortedNumbers)
Czy ktoś może wyjaśnić, co oznacza $0
i $1
w szybkim tempie?
więcej przykładowych
array.forEach {
actions.append($0)
}
$0
jest pierwszym parametrem przekazywane do zamknięcia. $1
to drugi parametr, itd. To zamknięcie pokazałeś jest skrótem dla:
let sortedNumbers = numbers.sort { (firstObject, secondObject) in
return firstObject > secondObject
}
odnoszą się do pierwszego i drugiego rodzaju argumenty. Tutaj sort
porównuje 2 elementy i zamówić je. Można patrzeć Swift official documentation o więcej informacji:
Swift automatycznie zapewnia nazwy argumentów skrótowym do inline zamknięć, które mogą być używane w odniesieniu do wartości zamknięcia za argumentów przez nazwy $ 0, $ 1, $ 2, i tak dalej.
Jest skrócone nazwy argumentów.
Swift automatycznie podaje skrócone nazwy argumentów do wstawiania zamknięć, które mogą być używane do odnoszenia się do wartości argumentów zamknięcia przez nazwy $ 0, 1 $, 2 $ i tak dalej.
Jeśli używasz tych skrótowych nazw w wyrażeniu zamknięcia, możesz pominąć listę argumentów zamknięcia z jego definicji, a liczba i typ skrótowych nazw będzie wywnioskowana z oczekiwanego typu funkcji. In hasła można również pominąć, ponieważ wyrażenie zamknięcie składa się w całości z jego ciała:
reversed = names.sort({ $0 > $1 })
Tutaj $ 0 oraz $ 1 dotyczą pierwszych i drugich argumentów strunowe zamknięcie jest.
Przedstawia argumenty osłabieniu wysłane do zamknięcia, w tym przykładzie rozbiciu:
Swift 4:
var add = { (arg1: Int, arg2: Int) -> Int in
return arg1 + arg2
}
add = { (arg1, arg2) -> Int in
return arg1 + arg2
}
add = { arg1, arg2 in
arg1 + arg2
}
add = {
$0 + $1
}
let result = add(20, 20) // 40
Ponieważ operator dodawania ma ten sam podpis funkcja, jak zamknięcia, można przełamać to jeszcze po prostu: 'dodać = (+)' – Samah
mogę napisać własną logikę w zamknięciu stosując pierwszy parametr i drugi? –
Tak, to cała celem zamknięcia. – AdamPro13
dzięki kolego, twoja odpowiedź pomogła mi zrozumieć większą część zamknięć –