Ya, jenis alias FunctorType
hanya singkatan untuk
(LocalDate, HolidayCalendar, Int, Boolean) => LocalDate
Ketik alias sering digunakan untuk menjaga sisa kode sederhana: Anda sekarang dapat menulis
def doSomeThing(f: FunctorType)
yang akan ditafsirkan oleh kompiler sebagai
def doSomeThing(f: (LocalDate, HolidayCalendar, Int, Boolean) => LocalDate)
Ini membantu untuk menghindari mendefinisikan banyak jenis kustom yang hanya tupel atau fungsi yang didefinisikan pada jenis lain, misalnya.
Ada juga beberapa kasus penggunaan menarik lainnya untuk type
, seperti dijelaskan misalnya dalam bab ini dari Pemrograman di Scala .
Saya menyukai jawaban dari Roland Ewald karena ia menggambarkan dengan penggunaan yang sangat sederhana alias tipe, dan untuk lebih detail memperkenalkan tutorial yang sangat bagus. Namun, karena use case lain diperkenalkan di posting ini bernama type member , saya ingin menyebutkan use case paling praktis darinya, yang sangat saya sukai: (bagian ini diambil dari sini :)
Tipe Abstrak:
T di atas mengatakan bahwa jenis ini yang akan digunakan, belum diketahui, dan tergantung pada subkelas beton, itu akan ditentukan. Cara terbaik untuk memahami konsep pemrograman adalah dengan memberikan contoh: Misalkan Anda memiliki skenario berikut:
Di sini Anda akan mendapatkan kesalahan kompilasi, karena metode makan di kelas Cow dan Tiger tidak menimpa metode makan di kelas Hewan, karena tipe parameternya berbeda. Ini Rumput di kelas Sapi, dan Daging di kelas Harimau vs Makanan di kelas Hewan yang super kelas dan semua subclass harus sesuai.
Sekarang kembali ke mengetik abstraksi, dengan diagram berikut dan hanya menambahkan abstraksi jenis, Anda dapat menentukan jenis input, dalam subkelas sesuai itu sendiri.
Sekarang lihat kode-kode berikut:
Kompiler senang dan kami meningkatkan desain kami. Kita bisa memberi makan sapi kita dengan sapi. Makanan yang cocok dan penyusun mencegah kita memberi makan sapi dengan makanan yang cocok untuk Harimau. Tetapi bagaimana jika kita ingin membuat perbedaan antara jenis cow1 CocokFood dan cow2 SuitabeFood. Dengan kata lain, akan sangat berguna dalam beberapa skenario jika jalur yang kita gunakan untuk mengetik (tentu saja melalui objek) pada dasarnya penting. Berkat fitur-fitur canggih dalam scala, dimungkinkan:
Tipe ketergantungan jalur: Objek scala dapat memiliki tipe sebagai anggota. Arti jenisnya, tergantung pada jalur yang Anda gunakan untuk mengaksesnya. Path ditentukan oleh referensi ke objek (alias turunan dari sebuah kelas). Untuk menerapkan skenario ini, Anda perlu mendefinisikan kelas Grass di dalam Sapi, yaitu, Sapi adalah kelas luar dan Rumput adalah kelas dalam. Strukturnya akan seperti ini:
Sekarang jika Anda mencoba untuk mengkompilasi kode ini:
Pada baris 4 Anda akan melihat kesalahan karena Rumput sekarang menjadi kelas bagian dalam Sapi, oleh karena itu, untuk membuat turunan Rumput, kita memerlukan objek sapi dan objek sapi ini menentukan jalurnya. Jadi 2 objek sapi memunculkan 2 jalur berbeda. Dalam skenario ini, cow2 hanya ingin makan makanan yang khusus dibuat untuk itu. Begitu:
Sekarang semua orang senang :-)
sumber
Hanya contoh untuk melihat cara menggunakan "ketik" sebagai alias:
Definisi di atas mendefinisikan Aksi sebagai alias dari jenis prosedur (metode) yang mengambil daftar parameter kosong dan yang mengembalikan Unit.
sumber