Οδηγός γλώσσας
Η τεκμηρίωση περιγράφει το οριστικοποιημένο εύρος της πειραματικής προέκδοσης v0.0.18. Η πραγματική δημοσίευση και οι λήψεις καταγράφονται στα GitHub Releases. Ο οδηγός εισάγει τη βασική σύνταξη. Η σύμβαση σύνταξης και η σύμβαση σημασιολογίας του αποθετηρίου παραμένουν οι κανονιστικές πηγές. Πρόκειται για διδακτικά αποσπάσματα· δείτε την υποστήριξη backend για τις διαφορές.
Μεταβλητές και τύποι
Ενότητα με τίτλο «Μεταβλητές και τύποι»name = "Ku"count:int = 3ready:bool = truevalues:[int] = [1, 2, 3]count += 1Η πρώτη ανάθεση δηλώνει μια μεταβλητή. Οι πρωτογενείς τύποι είναι int, float, bool, str και null. Οι ακέραιοι είναι προσημασμένοι 64 bit· η κινητή υποδιαστολή χρησιμοποιεί binary64. Οι ακέραιοι δεν μετατρέπονται σε συνθήκες μέσω έμμεσης μετατροπής αλήθειας.
Συναρτήσεις και ροή ελέγχου
Ενότητα με τίτλο «Συναρτήσεις και ροή ελέγχου»Αυτό το πλήρες βασικό παράδειγμα προέρχεται από το examples/function.ku:
fn add(a: int, b: int): int { return a + b}
fn main() { println(add(10, 20))}Αναμενόμενη έξοδος: 30. Αυτό το απόσπασμα ροής ελέγχου μπορεί να τοποθετηθεί μέσα στη main:
total = 0for i in 5 { total += i}if (total == 10) { println("sum ok")}Το for i in 5 επαναλαμβάνει από 0 έως 4. Τα if και while απαιτούν συνθήκες bool. Χρησιμοποιήστε άγκιστρα για πολλές εντολές. Οι εκφράσεις διακλάδωσης χρησιμοποιούν match· δεν υπάρχει switch.
Κυριότητα και δανεισμός μόνο για ανάγνωση
Ενότητα με τίτλο «Κυριότητα και δανεισμός μόνο για ανάγνωση»Τα int, float, bool και null είναι τιμές Copy. Συμβολοσειρές, πίνακες, αντικείμενα, δομές, απαριθμήσεις, Results και τιμές συναρτήσεων είναι Owned. Η ανάθεση και τα συνηθισμένα ορίσματα μετακινούν εξ ορισμού τιμές με κυριότητα. Χρησιμοποιήστε .clone() όταν χρειάζεστε ανεξάρτητη τιμή. Τα Tasks δεν κλωνοποιούνται.
original = "Ku"copy = original.clone()println(original)println(copy)Μια σύγχρονη συνάρτηση μπορεί να δηλώσει δανεισμένη παράμετρο μόνο για ανάγνωση:
fn length(&text: str): int { return text.len()}Καλέστε τη ως length(value), χωρίς & στο όρισμα. Τα δανεισμένα δεδομένα δεν μπορούν να τροποποιηθούν, να μετακινηθούν έξω από αυτά ή να διαφύγουν από την κλήση. Συνδυασμοί όπως δανεισμένες παράμετροι async παραμένουν μη υποστηριζόμενοι. Ο δανεισμός μόνο για ανάγνωση δεν εγγυάται αυθαίρετη καθαρότητα της συνάρτησης.
Δομές, αντικείμενα και μονάδες
Ενότητα με τίτλο «Δομές, αντικείμενα και μονάδες»struct User { name: str age: int}
user = User { name: "Ku", age: 1 }println(user.name)Τα δυναμικά αντικείμενα χρησιμοποιούν { name: "Ku" }. Ένας συνηθισμένος ανύπαρκτος δείκτης αντικειμένου αποτυγχάνει. Το value["name"]? χειρίζεται την αναζήτηση μέσω Result, αποδίδοντας KuValue σε επιτυχία. Χρησιμοποιήστε .as_str()? ή .as_int()? για συγκεκριμένο τύπο. Ένα απόν κλειδί δεν γίνεται σιωπηρά null.
Οι εισαγωγές της τυπικής βιβλιοθήκης χρησιμοποιούν διαδρομές με τελείες, όπως import json from "std.json". Οι τοπικές μονάδες μπορούν να χρησιμοποιούν import math from "./math". Οι εξαγωγές ανώτατου επιπέδου που ορίζει ο χρήστης αρχίζουν με κεφαλαίο γράμμα ASCII· τα πεζά ονόματα παραμένουν ιδιωτικά στο αρχείο.
Ανακτήσιμα σφάλματα
Ενότητα με τίτλο «Ανακτήσιμα σφάλματα»Ο τύπος επιστροφής T! μπορεί να επιστρέψει T ή Error. Το ? προωθεί ανακτήσιμο σφάλμα· το fail δημιουργεί ένα:
fn read_name(): str! { fail "name missing"}
fn main() { try { println(read_name()?) } catch (error) { println(error.message) }}Το Error έχει πεδία domain, code και message. Το συνηθισμένο catch δεν συλλαμβάνει panic, ακύρωση Task ή λήξη χρόνου. Ο καθαρισμός ακύρωσης στο finally μοιράζεται έναν προϋπολογισμό απόλυτης προθεσμίας· δεν εγγυάται την ολοκλήρωση κάθε καθαρισμού χρήστη.
Όρια συντρέχουσας εκτέλεσης
Ενότητα με τίτλο «Όρια συντρέχουσας εκτέλεσης»Ο κώδικας εφαρμογής αποκτά χειριστήριο Task μίας χρήσης καλώντας ένα async fn και στη συνέχεια χρησιμοποιεί await. Δεν υπάρχουν API εφαρμογής με ονόματα task.spawn, Task.new ή thread.spawn. Ο διερμηνευτής και το εγγενές υποσύνολο Task έχουν διαφορετική κάλυψη. Ένα παράδειγμα που λειτουργεί σε έναν backend δεν αποδεικνύει πλήρη υποστήριξη σε άλλον. Δείτε την υποστήριξη πλατφορμών και backend.