Scala telah disebut kompleks dengan fitur yang kaya yang ditetapkan oleh banyak rekan saya dan beberapa bahkan menyalahkan semua fitur baru itu. Sementara sebagian besar programmer mengetahui fitur-fitur OO, dan setidaknya yang layak juga tahu tentang pemrograman fungsional, ada satu fitur khususnya di Scala yang saya tidak mengetahui asal-usul historisnya.
Mengingat bahwa mantra utama profesi kita adalah untuk tidak menemukan kembali roda, saya agak percaya diri, bahwa Scala tidak memiliki apa yang sebenarnya pernah terdengar-dari-sebelumnya fitur, tapi aku berdiri dikoreksi yang satu ini jika perlu.
Untuk sampai ke pertanyaan yang sebenarnya, sementara saya menyadari asal-usul sebagian besar fitur Scala, saya belum pernah melihat sesuatu seperti implicit
deklarasi sebelumnya. Apakah ada bahasa lain (lama!) Di luar sana yang juga menyediakan fitur ini?
Apakah masuk akal untuk membedakan berbagai kasus implisit (karena mereka mungkin berasal dari sumber yang berbeda), yaitu konversi implisit dan parameter implisit?
Jawaban:
Saya tidak setuju dengan jawaban Brian pada pertanyaan lain itu.
Sejauh yang saya tahu, tidak ada konsep tersirat pada bahasa lain. Sejarah perubahan untuk Scala menyiratkan bahwa yang tersirat adalah generalisasi batas tampilan, dan batas tampilan, itu sendiri, generalisasi konversi tipe otomatis, yang memang sangat umum terjadi.
Implikit kemudian mengaktifkan kelas tipe, tetapi saya akan sangat terkejut jika itu adalah maksud aslinya.
Edit
Catatan rilis untuk Scala 2.0 (2006) mengatakan:
Tentu saja itu tidak berarti bahwa parameter implisit diperkenalkan dengan tujuan mengganti pandangan.
Namun, Odersky jelas menyukainya ketika sekali konsep dapat menggantikan beberapa konsep. Dalam hal itu, mungkin memang demikian halnya jika Odersky menginginkan kelas tipe, tetapi tidak ingin memperkenalkan mekanisme untuk menangani itu secara eksklusif, dan, oleh karena itu, muncul dengan sesuatu yang lain yang memungkinkan dia menghapus satu konsep (Tampilan) dan menggantinya dengan konsep yang lebih umum yang menangani pandangan dan tipe kelas.
Jika ada yang tertarik, Poor Man's Type Classes, yang dirujuk oleh Brian kembali di Stack Overflow, juga bertanggal 2006. Jelas, Odersky menyadari hubungan antara kelas implisit dan tipe ketika dia memperkenalkan mereka.
Namun, saya mendukung klaim saya. :-)
sumber
Implicit
dalam scala berarti dua hal yang berbedaimplict
kata kunci) yang pra-tanggal versi pertama Scala sekitar satu tahun.sumber
Saya mengajukan pertanyaan serupa pada Stack Overflow. Jawaban yang paling banyak dipilih dan yang lainnya menunjukkan bahwa asal-usulnya ada di Haskell.
sumber