Karat - Jenis Data
Sistem Jenis mewakili berbagai jenis nilai yang didukung oleh bahasa. Sistem Jenis memeriksa validitas nilai yang diberikan, sebelum disimpan atau dimanipulasi oleh program. Ini memastikan bahwa kode berperilaku seperti yang diharapkan. Sistem Jenis lebih jauh memungkinkan untuk petunjuk kode yang lebih kaya dan dokumentasi otomatis juga.
Rust adalah bahasa yang diketik secara statis. Setiap nilai di Rust memiliki tipe data tertentu. Kompilator dapat secara otomatis menyimpulkan tipe data variabel berdasarkan nilai yang diberikan padanya.
Deklarasikan Variabel
Menggunakan let kata kunci untuk mendeklarasikan variabel.
fn main() {
let company_string = "TutorialsPoint"; // string type
let rating_float = 4.5; // float type
let is_growing_boolean = true; // boolean type
let icon_char = '♥'; //unicode character type
println!("company name is:{}",company_string);
println!("company rating on 5 is:{}",rating_float);
println!("company is growing :{}",is_growing_boolean);
println!("company icon is:{}",icon_char);
}
Dalam contoh di atas, tipe data variabel akan disimpulkan dari nilai yang diberikan padanya. Misalnya, Rust akan menetapkan tipe data string ke variabel company_string , tipe data float ke rating_float , dll.
Hasil cetak! makro membutuhkan dua argumen -
- Sintaks khusus {} , yang merupakan placeholder
- Nama variabel atau konstanta
Placeholder akan diganti dengan nilai variabel
Output dari potongan kode di atas akan menjadi -
company name is: TutorialsPoint
company rating on 5 is:4.5
company is growing: true
company icon is: ♥
Jenis Skalar
Jenis skalar mewakili satu nilai. Misalnya, 10,3.14, 'c'. Karat memiliki empat jenis skalar utama.
- Integer
- Floating-point
- Booleans
- Characters
Kami akan mempelajari tentang setiap jenis di bagian selanjutnya.
Bilangan bulat
Integer adalah bilangan tanpa komponen pecahan. Sederhananya, tipe data integer digunakan untuk merepresentasikan bilangan bulat.
Integer selanjutnya dapat diklasifikasikan sebagai Signed dan Unsigned. Bilangan bulat yang ditandatangani dapat menyimpan nilai negatif dan positif. Bilangan bulat tak bertanda tangan hanya dapat menyimpan nilai positif. Penjelasan rinci jika tipe integer diberikan di bawah -
Sr.No. | Ukuran | Tertanda | Tidak ditandatangani |
---|---|---|---|
1 | 8 bit | i8 | u8 |
2 | 16 bit | i16 | u16 |
3 | 32 bit | i32 | u32 |
4 | 64 bit | i64 | u64 |
5 | 128 bit | i128 | u128 |
6 | Lengkungan | isize | menggunakan |
Ukuran bilangan bulat bisa berupa lengkungan . Ini berarti ukuran tipe data akan diturunkan dari arsitektur mesin. Bilangan bulat yang ukurannya arch adalah 32 bit pada mesin x86 dan 64 bit pada mesin x64. Bilangan bulat lengkung terutama digunakan saat mengindeks beberapa jenis koleksi.
Ilustrasi
fn main() {
let result = 10; // i32 by default
let age:u32 = 20;
let sum:i32 = 5-15;
let mark:isize = 10;
let count:usize = 30;
println!("result value is {}",result);
println!("sum is {} and age is {}",sum,age);
println!("mark is {} and count is {}",mark,count);
}
Outputnya akan seperti yang diberikan di bawah ini -
result value is 10
sum is -10 and age is 20
mark is 10 and count is 30
Kode di atas akan mengembalikan kesalahan kompilasi jika Anda mengganti nilai usia dengan nilai titik mengambang.
Rentang Integer
Setiap varian bertanda tangan dapat menyimpan nomor dari - (2 ^ (n-1) hingga 2 ^ (n-1) -1 , di mana n adalah jumlah bit yang digunakan varian. Misalnya, i8 dapat menyimpan angka dari - (2 ^ 7) menjadi 2 ^ 7 -1 - di sini kita mengganti n dengan 8.
Setiap varian unsigned dapat menyimpan angka dari 0 hingga (2 ^ n) -1 . Misalnya, u8 dapat menyimpan angka dari 0 hingga 2 ^ 7 , yang sama dengan 0 hingga 255.
Integer Overflow
Kelebihan bilangan bulat terjadi ketika nilai yang ditetapkan ke variabel bilangan bulat melebihi rentang yang ditentukan Rust untuk tipe data. Mari kita pahami ini dengan sebuah contoh -
fn main() {
let age:u8 = 255;
// 0 to 255 only allowed for u8
let weight:u8 = 256; //overflow value is 0
let height:u8 = 257; //overflow value is 1
let score:u8 = 258; //overflow value is 2
println!("age is {} ",age);
println!("weight is {}",weight);
println!("height is {}",height);
println!("score is {}",score);
}
Rentang valid variabel unsigned u8 adalah 0 sampai 255. Dalam contoh di atas, variabel diberi nilai lebih besar dari 255 (batas atas untuk variabel integer di Rust). Saat dieksekusi, kode di atas akan mengembalikan peringatan -warning − literal out of range for u8untuk variabel berat, tinggi dan skor. Nilai overflow setelah 255 akan dimulai dari 0, 1, 2, dll. Output akhir tanpa peringatan seperti yang ditunjukkan di bawah ini -
age is 255
weight is 0
height is 1
score is 2
Mengapung
Tipe data float di Rust dapat diklasifikasikan sebagai f32 dan f64. Jenis f32 adalah float presisi tunggal, dan f64 memiliki presisi ganda. Jenis defaultnya adalah f64. Pertimbangkan contoh berikut untuk memahami lebih lanjut tentang tipe data float.
fn main() {
let result = 10.00; //f64 by default
let interest:f32 = 8.35;
let cost:f64 = 15000.600; //double precision
println!("result value is {}",result);
println!("interest is {}",interest);
println!("cost is {}",cost);
}
Outputnya akan seperti yang ditunjukkan di bawah ini -
interest is 8.35
cost is 15000.6
Pengecoran Jenis Otomatis
Pengecoran tipe otomatis tidak diperbolehkan di Rust. Perhatikan cuplikan kode berikut. Nilai integer diberikan ke variabel floatinterest.
fn main() {
let interest:f32 = 8; // integer assigned to float variable
println!("interest is {}",interest);
}
Kompilator melempar file mismatched types error seperti yang diberikan di bawah ini.
error[E0308]: mismatched types
--> main.rs:2:22
|
2 | let interest:f32=8;
| ^ expected f32, found integral variable
|
= note: expected type `f32`
found type `{integer}`
error: aborting due to previous error(s)
Pemisah Nomor
Untuk memudahkan pembacaan angka besar, kita dapat menggunakan pemisah visual _ garis bawah untuk memisahkan digit. Itu 50.000 dapat ditulis sebagai 50_000. Ini ditunjukkan pada contoh di bawah ini.
fn main() {
let float_with_separator = 11_000.555_001;
println!("float value {}",float_with_separator);
let int_with_separator = 50_000;
println!("int value {}",int_with_separator);
}
Outputnya diberikan di bawah ini -
float value 11000.555001
int value 50000
Boolean
Jenis Boolean memiliki dua kemungkinan nilai - benar atau salah . Menggunakanbool kata kunci untuk mendeklarasikan variabel boolean.
Ilustrasi
fn main() {
let isfun:bool = true;
println!("Is Rust Programming Fun ? {}",isfun);
}
Output dari kode di atas akan menjadi -
Is Rust Programming Fun ? true
Karakter
Tipe data karakter di Rust mendukung angka, huruf, Unicode dan karakter khusus. Menggunakancharkata kunci untuk mendeklarasikan variabel tipe data karakter. Jenis karakter Rust mewakili Nilai Skalar Unicode, yang berarti dapat mewakili lebih dari sekadar ASCII. Nilai Skalar Unicode berkisar dariU+0000 untuk U+D7FF dan U+E000 untuk U+10FFFF inklusif.
Mari kita pertimbangkan contoh untuk memahami lebih lanjut tentang tipe data Karakter.
fn main() {
let special_character = '@'; //default
let alphabet:char = 'A';
let emoji:char = '';
println!("special character is {}",special_character);
println!("alphabet is {}",alphabet);
println!("emoji is {}",emoji);
}
Output dari kode di atas akan menjadi -
special character is @
alphabet is A
emoji is