Mengenal Data Type pada Vala
Dalam vala secara garis besarnya terdapat dua tipe data yaitu reference types dan value types
Perbedaanya adalah dari cara pewarisan nilai dari Instance ( Instance adalah.. ) pada Identifier/Variable ( Identifier adalah.. ) baru.
Value Type
/* atomic types */
unichar c = 'u';
float percentile = 0.75f;
const double MU_BOHR = 927.400915E-26;
bool the_box_has_crashed = false;
/* Mendefinisikan struct */
struct Vector {
public double x;
public double y;
public double z;
}
/* Enum */
enum WindowType {
TOPLEVEL,
POPUP
}
Reference Type
Oiya, kalau instance dari value type tidak disimpan dalam variable lalu dimana instance tersebut berada?
Yup, pertanyaan yang bagus. jawabannya adalah "heap memory" pada RAM
String
String dalam vala formatnya adalah UTF-8
// String
string ini_string = "Hello, aku adalah string \n";
print (ini_string);
// Membaca input user
print ("Nama kamu: ");
string nama = stdin.read_line ();
print ("Hai, "+nama+"\n");
Array
Array didefinisikan menggunakan []misal string[], int[], dsb.
// Array
int[] arrayku = {1, 2, 3, 4, 5};
string[] = {"aku index 0", "aku index 1", "aku index 3"};
print (string[0]);
// Multi-dimensional arrays didefinisikan dengan [,] atau [,,] dsb.
int[,] c = new int[3,4];
int[,] d = {{2, 4, 6, 8},
{3, 5, 7, 9},
{1, 3, 5, 7}};
d[2,3] = 42;
Class Reference
Class yang dijadikan reference, pada dasarnya setiap class juga adalah reference. Identifier/Variable dari reference yang tidak digunakan akan bernilai "null"
// Membuat class
class ClassBaru {
public int aku_integer;
public string aku_string;
public void ClassBaru () {
this.aku_integer = 1;
this.aku_string = "a b c";
}
}
ClassBaru aku_variable_satu;
ClassBaru aku_variable_dua;
int main () {
aku_variable_satu = new ClassBaru();
print (aku_variable_satu.aku_string);
}
/*
Dalam contoh ini aku_variable_satu adalah ClassBaru;
Sementara aku_variable_dua adalah "null", mengapa? karena tidak pernah digunakan
*/