bir yineleyici üzerinde filter()
çağıran bir örnek vardır: Aşağıdaki bir açıklaması varFiltre (| x |) ve filtre (| & x |) arasındaki fark nedir? <a href="https://doc.rust-lang.org/nightly/book/iterators.html#iterator-adapters" rel="noreferrer">Rust Book</a> yılında
for i in (1..100).filter(|&x| x % 2 == 0) {
println!("{}", i);
}
ama bunu anlamakta zorlanıyorum:
This will print all of the even numbers between one and a hundred. (Note that because filter doesn't consume the elements that are being iterated over, it is passed a reference to each element, and thus the filter predicate uses the &x pattern to extract the integer itself.)
Ancak bu işe yaramaz :
for i in (1..100).filter(|&x| *x % 2 == 0) {
println!("i={}", i);
}
Neden kapanmasına argümanı referans |&x|
, inst olduğunu |x|
ead? Ve |&x|
ve |x|
arasındaki fark nedir?
Ben bir referans |&x|
kullanarak daha verimli olduğunu anlıyoruz, ama ben *x
kullanarak x
pointer KQUEUE yoktu gerçeğiyle şaşkınım. Bir model eşleme olarak kullanılan
Yani 'let & x = my_pointer' aslında' let x = * my_pointer' yerine bir alternatif ve aynı zamanda işlev parametreleri bildirimlerinde de çalışıyor mu? Eğer öyleyse, '| x |' kullanarak neden bir hata atmıyor? C deneyimimden, burada bir işaretçi almayı beklerdim. Ya da pas, buradaki yığının üzerine orijinal x'in değerinin bir kopyasını örtülü olarak tahsis ediyor mu? – jeremija
Ohhh, öğrenecek çok şeyim var :) Teşekkür ederim - bu benim için şimdi daha net! – jeremija