Variabel yang Ditangkap
Termasuk bagian Logika & Alur dalam perjalanan Kotlin di Coddy. Pelajaran 29 dari 63.
Lambda dapat menggunakan variabel dari cakupan di sekitarnya. Ini disebut capture. Jika var yang ditangkap berubah, pemanggilan berikutnya akan melihat nilainya saat ini. Capture juga memungkinkan lambda yang dikembalikan mempertahankan status di antara pemanggilan.
Di dalam main:
var offset = 2
val addOffset = { n: Int -> n + offset }
offset = 5
println(addOffset(3))Lambda membaca nilai offset saat ini, yaitu lima, ketika dipanggil.
Variabel mutable yang ditangkap adalah state bersama, bukan salinan beku dari nilai aslinya.
Tantangan
SedangLengkapi capturedOffset dengan parameter value: Int, offset: Int. Buat lambda yang menambahkan offset dari lingkup sekitarnya ke argumen integer, lalu terapkan lambda tersebut pada value.
Kecuali batas yang lebih ketat dinyatakan di atas, koleksi berisi paling banyak 100 elemen pada setiap tingkat, dan argumen integer serta nilai integer dalam koleksi berada di antara -1000 dan 1000. Teks yang diberikan untuk parsing dapat berisi representasi yang tidak valid atau di luar rentang seperti yang dijelaskan.
Kembalikan nilai bertipe Int. Pertahankan kode input/output yang diberikan. Kode tersebut membaca argumen skalar satu per baris; list dimulai dengan jumlah elemennya, lalu diikuti elemen-elemennya, dan map dimulai dengan jumlah entrinya, lalu diikuti setiap kunci dan nilai. List bersarang mengulangi format jumlah elemen dan elemen untuk setiap baris. main yang diberikan mencetak nilai yang dikembalikan, lalu satu baris baru. List menggunakan format standar Kotlin dengan tanda kurung siku; jangan cetak label tambahan.
Coba sendiri
fun capturedOffset(value: Int, offset: Int): Int {
// Tulis solusimu di sini.
return 0
}
fun main() {
val value = readln().toInt()
val offset = readln().toInt()
println(capturedOffset(value, offset))
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika & Alur
4Koleksi Bersarang
List Berisi ListMenelusuri BarisRingkasan BarisMeratakan List BertingkatRangkuman, Baris Tempat Duduk7Alur Pemrosesan Koleksi
Transformasi dengan MapMemfilter NilaiMenguji Aturan KoleksiMengakumulasi dengan FoldRangkuman: Total yang Disetujui2Map Bagian 2
Menelusuri Entri MapKunci dan NilaiMap FrekuensiMap BersarangRingkasan: Laporan Frekuensi5Proyek: Buku Kontak
Menyimpan KontakMencari Kontak6Nilai Fungsi
Menulis LambdaTipe FungsiMeneruskan FungsiVariabel yang DitangkapRingkasan: Skor yang Dapat DiaturLatihan sendiri: Playground Kotlin