Menu
Coddy logo textTech

Parametreli Closure'lar

Coddy'nin Rust Journey'sinin Logic & Flow bölümünün bir parçası — ders 61 / 66.

Parametre almayan closure'lar yararlı olsa da, çoğu zaman closure'larınızı daha esnek ve güçlü hale getirmek için onlara veri aktarmak isteyeceksiniz. Closure'lara parametre eklemek, daha önce öğrendiğiniz aynı kalıbı takip eder, ancak değerler dikey çubukların içinde yer alır.

Tek bir parametre kabul eden bir closure'ı şu şekilde tanımlayabilirsiniz:

let add_one = |x: i32| x + 1;

Parametre x'in, tıpkı fonksiyon parametreleri gibi dikey çubukların arasına geldiğine dikkat edin. Ardından, bir değer geçirerek bu closure'ı çağırabilirsiniz:

let add_one = |x: i32| x + 1;
let result = add_one(5); // sonuç 6

Birden fazla parametreye sahip closure'lar için, bunları virgülle ayırın:

let multiply = |x: i32, y: i32| x * y;
let result = multiply(3, 4); // sonuç 12'dir
challenge icon

Görev

Kolay

İki girdi alacaksınız. İlk girdi bir sayı, ikinci girdi de bir sayıdır. İki parametre alan ve kuvvet hesaplayan (birinci parametrenin ikinci parametre kuvveti) bir closure oluşturun. Closure'ı bir değişkende saklayın, girdi değerleriyle çağırın ve sonucu yazdırın.

Gereksinimler:

  • İlk girdiyi (taban sayı) okuyun ve boşlukları temizleyin
  • Bunu i32 türüne dönüştürün
  • İkinci girdiyi (üs) okuyun ve boşlukları temizleyin
  • Bunu u32 türüne dönüştürün
  • .pow() metodunu kullanarak kuvveti hesaplayan iki parametreli bir closure oluşturun
  • Closure'ı bir değişkende saklayın
  • Closure'ı her iki girdi değeriyle çağırın
  • Sonucu yazdırın

Girdi:

  • İlk satır: Bir taban sayı (örneğin, 2)
  • İkinci satır: Bir üs (örneğin, 3)

Çıktı:

  • Kuvvet hesaplamasının sonucu

Kopya kağıdı

Closure'lar, parametreleri dikey çubukların || arasına yerleştirerek kabul edebilirler:

let add_one = |x: i32| x + 1;
let result = add_one(5); // sonuç 6'dır

Birden fazla parametre için bunları virgülle ayırın:

let multiply = |x: i32, y: i32| x * y;
let result = multiply(3, 4); // sonuç 12'dir

Kendin dene

use std::io;

fn main() {
    // İlk girişi oku (taban sayı)
    let mut base_input = String::new();
    io::stdin().read_line(&mut base_input).expect("Failed to read line");
    let base: i32 = base_input.trim().parse().expect("Invalid number");
    
    // İkinci girişi oku (üs)
    let mut exp_input = String::new();
    io::stdin().read_line(&mut exp_input).expect("Failed to read line");
    let exponent: u32 = exp_input.trim().parse().expect("Invalid number");
    
    // TODO: Kuvvet hesaplayan bir closure oluşturun ve bunu bir değişkende saklayın
    // TODO: Closure'ı taban ve üs ile çağırın
    
    // Sonucu yazdır
    println!("{}", result);
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Logic & Flow bölümündeki tüm dersler