‫Apa itu fungsi murni?
‫Nah, fungsi murni terlihat seperti ini, kita memiliki fungsi, jadi alih-alih kotak yang kita miliki sebelumnya berisi
‫objek dari semua fungsi ini, anggap ini hanya sebagai fungsi sederhana.
‫Dan katakanlah kita memberikan daftar yang berisi satu, dua dan tiga.
‫Jika kita memberikan input ini ke fungsi ini, apa yang kita harapkan dengan fungsi murni adalah sesuatu terjadi
‫pada input ini yang setiap kali menghasilkan hal yang sama.
‫Jadi katakanlah kita kalikan ini dengan dua, kita akan menerima dua, empat dan enam.
‫Sekarang, fungsi murni memiliki dua aturan.
‫Salah satunya adalah yang diberi input yang sama, akan selalu mengembalikan output yang sama yaitu, setiap kali kita memberikan satu, dua dan
‫tiga ke daftar ini, kita memberikannya ke fungsi yang kita buat.
‫Itu harus selalu mengembalikan output yang sama.
‫Jadi jika saya menjalankan fungsi ini jutaan kali dengan input yang sama, itu akan menghasilkan output yang sama.
‫Dan poin kedua adalah gagasan tentang suatu fungsi seharusnya tidak menghasilkan efek samping apa pun.
‫Apa efek sampingnya?
‫Efek samping adalah hal-hal yang berfungsi.
‫Apakah itu mempengaruhi dunia luar?
‫Misalnya, jika saya mencetak sesuatu di dalam fungsi ini, itu akan mempengaruhi dunia luar, bukan?
‫Karena saya sedang mencetak sesuatu ke layar.
‫Layar adalah dunia luar.
‫Atau, misalnya, jika fungsi ini menyentuh variabel yang hidup di luar lingkup yang berbeda, itu adalah
‫efek sampingnya.
‫Mari kita lihat.
‫Sebuah kode untuk memahami konsep ini sedikit lebih banyak.
‫Katakanlah kita memiliki sebuah fungsi dan kemudian fungsi ini akan mengalikan.
‫Dengan ke daftar, jadi katakan saja sekutu, yang akan menjadi daftar kita, dan di sini yang ingin kita
‫lakukan adalah mengulang item.
‫Dalam terakhir.
‫Dan kemudian setiap item yang ingin kita kalikan dan tambahkan ke daftar baru.
‫Jadi mari kita buat daftar baru yang akan menjadi daftar kosong.
‫Dan di sini, kami akan mengatakan daftar baru, dot append.
‫Dan lakukan di kalikan dua.
‫Dan akhirnya, di akhir fungsi ini, kami ingin mengembalikan daftar baru.
‫Mari kita coba ini.
‫Jika saya katakan kalikan dengan dua dan berikan satu, dua, tiga dan mari kita cetak.
‫Di sini, outputnya.
‫Jika saya klik, jalankan.
‫Saya mendapatkan dua, empat, enam.
‫Apakah ini fungsi murni, mari kita pikirkan ini.
‫Aturan pertama diberi input yang sama, yaitu satu, dua dan tiga.
‫Itu akan selalu mengembalikan output yang sama, tidak peduli berapa kali saya menjalankan ini, itu akan selalu memberi
‫saya output yang sama.
‫Jadi, oke, kami lulus tes pertama.
‫Bagaimana dengan tes kedua yang tidak menghasilkan efek samping?
‫Apakah ini menghasilkan efek samping?
‫Apakah ini menyentuh sesuatu di dunia luar?
‫Pikirkan tentang itu.
‫Tidak, itu tidak menulis apa pun di dunia luar yang penting untuk fungsi ini.
‫Karena semuanya ada di sini.
‫Jika, misalnya, alih-alih mencetak di sini, kami hanya mencetak.
‫Dan di sini.
‫Jika saya klik, jalankan.
‫Kami mendapatkan hasil yang sama, tetapi apakah ini memiliki efek samping?
‫Ya, memang begitu.
‫Ini berinteraksi dengan dunia luar, yang merupakan pernyataan cetak.
‫Pernyataan cetak memberi tahu saya, hei, saya akan mencetak pada tampilan apa pun yang dimiliki mesin ini.
‫Dalam kasus kami, itu akan dicetak di sini, tetapi kami tidak benar-benar tahu apa yang dilakukan pernyataan cetak
‫karena itu berinteraksi dengan layar di sisi ini.
‫Jadi ini.
‫Efek samping, kami memberikan kontrol untuk mencetak, tetapi kami tidak tahu apa yang akan dilakukan pencetakan.
‫Contoh lain yang bisa saya berikan.
‫Apakah ini bagaimana jika kita memiliki daftar baru di sini yang sebenarnya kita definisikan di luar?
‫Seperti begitu.
‫Sehingga kami memiliki daftar baru seperti ini, jika saya klik jalankan.
‫Saya masih mendapatkan empat, enam, tetapi apakah ini memiliki efek samping?
‫Ya, memang begitu.
‫Itu berinteraksi dengan dunia luar dan apa yang ada di luar dunia ini dari suatu fungsi
‫yang ingat, adalah ruang lingkupnya, nah, itu berinteraksi dengan daftar baru ini.
‫Itu terjadi pada daftar baru ini.
‫Jadi jika seorang programmer datang dan mungkin sebelum kami menjalankan fungsi ini, kami memutuskan untuk mengatakan daftar baru.
‫Kami mengubahnya menjadi string kosong.
‫Nah, ketika saya menjalankan fungsi ini.
‫Saya mendapatkan kesalahan karena sekarang daftar baru ini adalah objek string.
‫Jadi daftar baru yang hidup di dunia luar dari fungsi ini dapat dimodifikasi oleh pengembang lain atau oleh suatu
‫program dan kita tidak akan mengetahuinya.
‫Dan ketika kita menjalankan fungsi ini, itu akan memberi kita kesalahan.
‫Ini memiliki efek samping.
‫Jadi idealnya, kita mengandung fungsi kita.
‫Dan buat mereka murni, karena, seperti yang Anda lihat, kami tidak akan pernah memiliki bug atau kesalahan dalam kode kami kecuali kami
‫menulis sesuatu yang salah di sini, tetapi karena kami tidak peduli dengan dunia luar, karena semua
‫yang kami berikan sebagai input akan selalu menghasilkan output yang baik, itu akan menjadi murni.
‫Sekarang, sulit untuk benar-benar memahami mengapa ini adalah konsep yang sangat kuat tanpa memiliki sedikit pengalaman di tempat
‫kerja.
‫Tapi izinkan saya memberi tahu Anda ini, bahwa ketika Anda memiliki fungsi murni.
‫Anda memiliki lebih sedikit kode buggy, Anda dapat menguji kode Anda dengan lebih baik.
‫Lebih mudah untuk memahami kode Anda dan secara keseluruhan.
‫Anda memiliki manfaat ini karena tidak memiliki bagian yang berbeda dari kode Anda, saling menyentuh dan mempengaruhi satu
‫sama lain, yang membuat hidup Anda sebagai programmer jauh lebih mudah.
‫Jadi ide fungsi murni ini sangat penting.
‫Tetapi satu hal yang saya ingin Anda ambil dari ini adalah bahwa fungsi murni lebih merupakan pedoman
‫daripada absolut.
‫Tidak mungkin memiliki fungsi murni di mana-mana karena jika suatu fungsi tidak mempengaruhi dunia luar sama sekali, kita
‫tidak akan memiliki program apa pun.
‫Kami tidak akan bisa menampilkan sesuatu.
‫Kami tidak akan dapat menyimpan hal-hal seperti profil game kami.
‫Jadi tidak mungkin memiliki fungsi murni di mana-mana.
‫Namun, ketika Anda bisa di mana pun Anda bisa, pemrograman fungsional mengajarkan kita bahwa fungsi Anda baik.
‫Cobalah untuk membuat fungsi murni dan hanya memiliki beberapa fungsi non murni yang mungkin berinteraksi dengan
‫dunia luar yang dapat kita kembalikan kapan pun kita memiliki bug dalam kode kita, karena
‫kemungkinan besar itulah yang akan memiliki bug kemudian fungsi murni seperti ini untuk menyelesaikan konsep pemrograman fungsional kami.
‫Jika, misalnya, ini adalah wizard kami dari video sebelumnya dengan pemrograman fungsional, kami akan
‫memiliki objek wizard.
‫Atau kamus Wizzard yang punya nama.
‫Sebut saja Marlon.
‫Dan kekuatan.
‫Dari 50.
‫Dan alih-alih mengandung ini di kelas, saya akan memiliki metode yang berbeda seperti serangan.
‫Dan ini tidak akan menjadi metode, itu akan menjadi fungsi karena tidak hidup di dalam kelas.
‫Dalam pemrograman fungsional, mereka berkata, hei, kita tidak perlu menggabungkan data dengan fungsi,
‫mari kita pisahkan, mari kita buat fungsi murni yang dapat dilewatkan seperti karakter.
‫Dan dengan cara ini, kami memisahkan kedua hal itu sehingga kami dapat fokus pada fungsi murni dan kami
‫dapat fokus pada data, jadi di situlah perbedaannya.
‫Pada akhirnya, ini semua tentang mencoba menjaga mantel kita tetap bersih dan menghindari bug di mantel kita,
‫masalah besar yang selalu dihadapi programmer.
‫Jadi hanya cara berpikirnya saja yang berbeda.
‫Mari kita pelajari lebih lanjut di video berikutnya.