Menurut pendapat saya, salah satu hal terbesar tentang Scala adalah interoperabilitasnya dengan Java dan sintaksisnya yang serupa. Satu hal yang saya temukan aneh adalah penggunaan _
operator untuk paket impor kartu wil bukan *
operator yang digunakan di Jawa.
Apakah ada alasan teknis untuk menggunakan _
bukan *
? Jika tidak, lalu mengapa perubahan ini dilakukan?
Jawaban:
Di Scala, itu
*
adalah pengidentifikasi yang valid. Orang bisa menulis:Hasilnya adalah:
Seseorang dapat menulis kelas dengan nama
*
seperti itu:Jadi dengan demikian, ketika saya memiliki kelas
*
dalam paketus.hexcoder
dan saya menulis:Anda akan mengatakan bahwa Anda ingin mengimpor kelas dengan nama
*
. Karena itu, Scala perlu menggunakan simbol lain untuk menunjukkan impor wildcard. Untuk alasan apa pun, mereka memutuskan untuk menggunakan_
sebagai simbol wildcard.sumber
*
perlu dimasukkan untuk perkalian. Jadi karakter lain yang kurang umum perlu dipilih sebagai karakter pendiam.Dalam bahasa fungsional, karakter _ biasanya digunakan untuk mengatakan, "Saya tidak peduli dengan parameter ini" atau "apa pun bisa masuk ke sini". Memperluas nilai itu ke impor namespace hanya masuk akal.
sumber
Selain jawaban Glenn,
import
adalah pernyataan yang valid di mana saja di Scala dan Anda dapatimport
objek atau instance anggota ke dalam ruang lingkup. Karena*
jelas merupakan anggota dari banyak kelas, itu tidak dapat digunakan sebagai wildcard untukimport
pernyataan tersebut. Jadi Anda berakhir dengan string yang tidak boleh menjadi pengidentifikasi yang valid._
datang ke pikiran. Fakta bahwa itu digunakan di tempat lain untuk makna yang berbeda (tipe eksistensial, berfungsi sebagai contoh) juga karena masalah yang sama.sumber
Di Scala ada puluhan tempat di mana garis bawah digunakan. Menggunakannya untuk impor wildcard hanyalah konsekuensi logis.
sumber