Strings
Cara kerja string di AHA! — struct nyata, konkatenasi aman, dan panjang O(1)
Strings
String di AHA! adalah struct {pointer, length} nyata — bukan trik pointer telanjang. Itu membuat konkatenasi aman dan len() bersifat O(1).
Literal String
let name = "world";Urutan escape yang didukung: \n, \t, \\, \", \r, \0.
Konkatenasi
+ pada string mengalokasikan buffer baru via malloc, menyalin kedua bagian dengan memcpy, dan menambahkan null-terminator pada hasilnya:
let name = "world";
let greeting = "Hello, " + name;
print_str(greeting); // Hello, worldPerbandingan
== dan != membandingkan seluruh isi via strcmp:
if "aha" == "aha" {
print(1); // 1
}Panjang
len() membaca field panjang dari struct — O(1), tanpa pemindaian:
print(len(name)); // 5
print(len("")); // 0Mencetak
print_str(s)— cetak sebuah stringprint(n)— cetak sebuah bilangan bulat
Lihat Builtins untuk daftar lengkapnya.
String dalam Fungsi
String dapat dilewatkan sebagai argumen dan dikembalikan dari fungsi. Tipe kembali disimpulkan secara otomatis oleh sebuah pra-tahap:
fn shout(s) {
s + "!"
}
print_str(shout("aha")); // aha!