inout Nedir?
Swift'de inout parametreleri, bir fonksiyona değişkeni referans olarak göndemerk için kullanılmaktadır. Diğer türlü Swift'de bir fonksiyonda kullanılan parametrenin değerini değiştirmek mümkün değildir. Bunun nedeni fonksiyonların argümanlarının sabit olmasındandır.
Örnek üzerinden açıklanırsa daha anlaşılır olacaktır.
func change(_ number: Int){
number = 2
}
var number = 1
change(number)
print(number)
Yukarıdaki kodu çalıştırmak istediğimizde Aşağıdaki hatayı verecektir.
Output:
main.swift:6:5: error: cannot assign to value: 'number' is a 'let' constant
Bu hata tam olarak yukarıdaki söylenen gibi olmaktadır. Bir sabiti değiştiremezsiniz.
Ancak, bir fonksiyona aktarılan parametreyi değiştirebilmeniz çoğu zaman faydalı olabilir. Peki kullanmak istersek nasıl yapmamız gerektiği aşağıda gösterilmiştir.
Bir işlev parametresini, bir işlevin içinde değiştirilebilen bir giriş değişkenine dönüştürmek için:
- inout anahtar kelime değiştiricisini kullanarak parametreyi bir inout parametresi ilave edin.
- Fonksiyon isteğinde bir argüman iletirken & kullanın.
func change(_ number: inout Int){
number = 2
}
var number = 1
change(&number)
print(number)
Output:
2