Τιμές
Μια τιμή είναι δεδομένα που παράγονται από την αξιολόγηση μιας παράστασης. Αυτή η ενότητα περιγράφει τα είδη των τιμών στη γλώσσα M. Κάθε είδος τιμής σχετίζεται με μια σύνταξη λεκτικής σταθεράς, ένα σύνολο τιμών αυτού του είδους, ένα σύνολο τελεστών που ορίζονται σε αυτό το σύνολο τιμών και έναν εγγενή τύπο που αποδίδεται σε πρόσφατα κατασκευασμένες τιμές.
Είδος | Literal |
---|---|
Άκυρος | null |
Λογικός | true false |
Αριθμός | 0 1 -1 1.5 2.3e-5 |
Time | #time(09,15,00) |
Ημερομηνία | #date(2013,02,26) |
ΗμερομηνίαΏρα | #datetime(2013,02,26, 09,15,00) |
Ζώνη ημερομηνίας/ώρας | #datetimezone(2013,02,26, 09,15,00, 09,00) |
Διάρκεια | #duration(0,1,30,0) |
Κείμενο | "hello" |
Δυαδικός | #binary("AQID") |
Λίστα | {1, 2, 3} |
Καρτέλα | [ A = 1, B = 2 ] |
Πίνακας | #table({"X","Y"},{{0,1},{1,0}}) |
Λειτουργία | (x) => x + 1 |
Τύπος | type { number } type table [ A = any, B = text ] |
Οι παρακάτω ενότητες καλύπτουν κάθε είδος τιμής λεπτομερώς. Οι τύποι και η περιγραφή τύπου ορίζονται επίσημα στους Τύπους. Οι τιμές συναρτήσεων ορίζονται στις Συναρτήσεις. Οι παρακάτω ενότητες παρατίθενται τους τελεστές που έχουν οριστεί για κάθε είδος τιμής και παρέχουν παραδείγματα. Ακολουθεί ο πλήρης ορισμός της σημασιολογίας τελεστών στην ενότητα Τελεστές.
Μια τιμή null χρησιμοποιείται για να αντιπροσωπεύσει την απουσία μιας τιμής ή μια τιμή απροσδιόριστης ή άγνωστης κατάστασης. Μια τιμή null συντάσσεται χρησιμοποιώντας την λεκτική σταθερά null
. Οι ακόλουθοι τελεστές έχουν ορισθεί για τιμές null:
Τελεστής | Αποτέλεσμα |
---|---|
x > y |
Μεγαλύτερο από |
x >= y |
Μεγαλύτερο από ή ίσο με |
x < y |
Μικρότερο από |
x <= y |
Μικρότερο από ή ίσο με |
x = y |
Ίσο |
x <> y |
Δεν ισούται με |
x ?? y |
Coalesce |
Ο εγγενής τύπος της τιμής null
είναι ο εγγενής τύπος null
.
Μια λογική τιμή που χρησιμοποιείται για δυαδικές λειτουργίες έχει την τιμή true ή false. Μια λογική τιμή συντάσσεται χρησιμοποιώντας τις λεκτικές σταθερές true
και false
. Οι ακόλουθοι τελεστές έχουν ορισθεί για λογικές τιμές:
Τελεστής | Αποτέλεσμα |
---|---|
x > y |
Μεγαλύτερο από |
x >= y |
Μεγαλύτερο από ή ίσο με |
x < y |
Μικρότερο από |
x <= y |
Μικρότερο από ή ίσο με |
x = y |
Ίσο |
x <> y |
Δεν ισούται με |
x or y |
Λογική συνθήκη OR |
x ?? y |
Coalesce |
x and y |
Λογική συνθήκη AND |
not x |
Λογικό ΝΟΤΕ |
Ο εγγενής τύπος και των δύο λογικών τιμών (true
και false
) είναι ο εγγενής τύπος logical
.
Μια αριθμητική τιμή χρησιμοποιείται για αριθμητικές πράξεις. Τα παρακάτω είναι παραδείγματα αριθμητικών λεκτικών σταθερών:
3.14 // Fractional number
-1.5 // Fractional number
1.0e3 // Fractional number with exponent
123 // Whole number
1e3 // Whole number with exponent
0xff // Whole number in hex (255)
Ένας αριθμός αντιπροσωπεύεται με τουλάχιστον διπλή ακρίβεια (αλλά μπορεί να διατηρήσει μεγαλύτερη ακρίβεια). Η Διπλή αναπαράσταση είναι ταυτόχρονη με το πρότυπο διπλής ακρίβειας IEEE 64-bit για το αριθμητικό δυαδικό κινητής υποδιαστολής που ορίζεται στο [IEEE 754-2008]. (Το Η διπλή αναπαράσταση έχει κατά προσέγγιση δυναμική περιοχή από 5,0 x 10324 έως 1,7 x 10308 με ακρίβεια 15-16 ψηφίων.)
Οι ακόλουθες ειδικές τιμές θεωρούνται επίσης αριθμητικές τιμές:
Θετικό μηδέν και αρνητικό μηδέν. Στις περισσότερες περιπτώσεις, το θετικό μηδέν και το αρνητικό μηδέν συμπεριφέρονται πανομοιότυπα με την απλή τιμή μηδέν, αλλά ορισμένες λειτουργίες κάνουν διάκριση μεταξύ των δύο.
Θετικό άπειρο (
#infinity
) και αρνητικό άπειρο (-#infinity
). Τα άπειρα παράγονται από λειτουργίες όπως η διαίρεση ενός μη μηδενικού αριθμού με το μηδέν. Για παράδειγμα,1.0 / 0.0
το αποδίδει θετικό άπειρο και-1.0 / 0.0
αποδίδει αρνητικό άπειρο.Η τιμή Όχι-ένας-αριθμός (
#nan
), συχνά συντομογραφημένη NaN. Τα NaN παράγονται από μη έγκυρες λειτουργίες κινητής υποδιαστολής, όπως η διαίρεση του μηδενός με το μηδέν.
Οι δυαδικές μαθηματικές πράξεις εκτελούνται με χρήση Ακρίβειας. Η ακρίβεια προσδιορίζει τον τομέα στον οποίο στρογγυλοποιούνται οι τελεστέοι και τον τομέα στον οποίο εκτελείται η λειτουργία. Ελλείψει ρητής καθορισμένης ακρίβειας, αυτές οι λειτουργίες εκτελούνται με χρήση Διπλής ακρίβειας.
Εάν το αποτέλεσμα μιας μαθηματικής πράξης είναι πολύ μικρό για τη μορφή προορισμού, το αποτέλεσμα της πράξης μετατρέπεται σε θετικό μηδέν ή αρνητικό μηδέν.
Εάν το αποτέλεσμα μιας μαθηματικής πράξης είναι πολύ μεγάλο για τη μορφή προορισμού, το αποτέλεσμα της πράξης μετατρέπεται σε θετικό άπειρο ή αρνητικό άπειρο.
Εάν μια μαθηματική πράξη δεν είναι έγκυρη, το αποτέλεσμα της πράξης γίνεται NaN.
Εάν ένας ή και οι δύο τελεστέοι μιας πράξης κινητής υποδιαστολής είναι η NaN, το αποτέλεσμα της πράξης γίνεται NaN.
Οι ακόλουθοι τελεστές έχουν ορισθεί για αριθμητικές τιμές:
Τελεστής | Αποτέλεσμα |
---|---|
x > y |
Μεγαλύτερο από |
x >= y |
Μεγαλύτερο από ή ίσο με |
x < y |
Μικρότερο από |
x <= y |
Μικρότερο από ή ίσο με |
x = y |
Ίσο |
x <> y |
Δεν ισούται με |
x + y |
Άθροισμα |
x - y |
Διαφορά |
x * y |
Προϊόν |
x / y |
Πηλίκο |
x ?? y |
Coalesce |
+x |
Μοναδιαίο συν |
-x |
Άρνηση |
Ο εγγενής τύπος αριθμητικών τιμών είναι ο εγγενής τύπος number
.
Μια τιμή ώρας αποθηκεύει μια αδιαφανή αναπαράσταση ώρας της ημέρας. Μια ώρα κωδικοποιείται ως ο αριθμός των σημάτων ρολογιού από τα μεσάνυχτα, το οποίο μετρά τον αριθμό των 100-νανοδευτεροεγγραφών που έχουν παρέλθει σε 24ωρη μορφή ρολογιού. Ο μέγιστος αριθμός των σημάτων ρολογιού από τα μεσάνυχτα αντιστοιχεί σε 23:59:59.99999999 ώρες.
Παρόλο που δεν υπάρχει σύνταξη λεκτικής σταθεράς για τους χρόνους, παρέχονται πολλές τυπικές συναρτήσεις βιβλιοθήκης για τη δημιουργία τους. Οι χρόνοι μπορούν επίσης να κατασκευαστούν με χρήση της εγγενούς συνάρτησης #time
:
#time(hour, minute, second)
Τα παρακάτω πρέπει να ισχύουν, διαφορετικά, προκαλείται σφάλμα με κωδικό Expression.Error
αιτιολογίας :
0 ≤ ώρα ≤ 24
0 ≤ λεπτά ≤ 59
0 ≤ δευτερόλεπτο ≤ 59
Επιπλέον, εάν η ώρα = 24, τότε το λεπτό και το δευτερόλεπτο πρέπει να είναι μηδέν.
Οι ακόλουθοι τελεστές έχουν ορισθεί για τις τιμές ώρας:
Τελεστής | Αποτέλεσμα |
---|---|
x = y |
Ίσο |
x <> y |
Δεν ισούται με |
x >= y |
Μεγαλύτερο από ή ίσο με |
x > y |
Μεγαλύτερο από |
x < y |
Μικρότερο από |
x <= y |
Μικρότερο από ή ίσο με |
x ?? y |
Coalesce |
Οι ακόλουθοι τελεστές επιτρέπουν σε έναν ή και στους δύο τελεστέους τους να είναι ημερομηνία:
Τελεστής | Αριστερός τελεστέος | Δεξιός τελεστέος | Νόημα |
---|---|---|---|
x + y |
time |
duration |
Μετατόπιση ημερομηνίας κατά διάρκεια |
x + y |
duration |
time |
Μετατόπιση ημερομηνίας κατά διάρκεια |
x - y |
time |
duration |
Μετατόπιση ημερομηνίας κατά αρνητική διάρκεια |
x - y |
time |
time |
Διάρκεια μεταξύ ημερομηνιών |
x & y |
date |
time |
Συγχωνευμένη ημερομηνία/ώρα |
Ο εγγενής τύπος τιμών ώρας είναι ο εγγενής τύπος time
.
Μια τιμή ημερομηνίας αποθηκεύει μια αδιαφανή αναπαράσταση μιας συγκεκριμένης ημέρας. Μια ημερομηνία κωδικοποιείται ως αριθμός ημερών από την χρονική σήμανση, ξεκινώντας από την 1η Ιανουαρίου 0001 Κοινή Εποχή στο Γρηγοριανό ημερολόγιο. Ο μέγιστος αριθμός ημερών από την χρονική σήμανση είναι 3652058, που αντιστοιχεί στις 31 Δεκεμβρίου 9999.
Παρόλο που δεν υπάρχει σύνταξη λεκτικής σταθεράς για τις ημερομηνίες, παρέχονται πολλές τυπικές συναρτήσεις βιβλιοθήκης για τη δημιουργία τους. Οι ημερομηνίες μπορούν επίσης να κατασκευαστούν με χρήση της εγγενούς συνάρτησης #date
:
#date(year, month, day)
Τα παρακάτω πρέπει να ισχύουν, διαφορετικά, προκαλείται σφάλμα με κωδικό Expression.Error
αιτιολογίας :
1 ≤ έτος ≤ 9999
1 ≤ μήνας ≤ 12
1 ≤ ημέρα ≤ 31
Επιπλέον, η ημέρα πρέπει να είναι έγκυρη για τον επιλεγμένο μήνα και έτος.
Οι ακόλουθοι τελεστές έχουν ορισθεί για τις τιμές ημερομηνίας:
Τελεστής | Αποτέλεσμα |
---|---|
x = y |
Ίσο |
x <> y |
Δεν ισούται με |
x >= y |
Μεγαλύτερο από ή ίσο με |
x > y |
Μεγαλύτερο από |
x < y |
Μικρότερο από |
x <= y |
Μικρότερο από ή ίσο με |
x ?? y |
Coalesce |
Οι ακόλουθοι τελεστές επιτρέπουν σε έναν ή και στους δύο τελεστέους τους να είναι ημερομηνία:
Τελεστής | Αριστερός τελεστέος | Δεξιός τελεστέος | Νόημα |
---|---|---|---|
x + y |
date |
duration |
Μετατόπιση ημερομηνίας κατά διάρκεια |
x + y |
duration |
date |
Μετατόπιση ημερομηνίας κατά διάρκεια |
x - y |
date |
duration |
Μετατόπιση ημερομηνίας κατά αρνητική διάρκεια |
x - y |
date |
date |
Διάρκεια μεταξύ ημερομηνιών |
x & y |
date |
time |
Συγχωνευμένη ημερομηνία/ώρα |
Ο εγγενής τύπος τιμών ημερομηνίας είναι ο εγγενής τύπος date
.
Μια τιμή ημερομηνίας/ώρας περιέχει ημερομηνία και ώρα.
Παρόλο που δεν υπάρχει σύνταξη λεκτικής σταθεράς για τις ημερομηνίες/ώρες, παρέχονται πολλές τυπικές συναρτήσεις βιβλιοθήκης για τη δημιουργία τους. Οι τιμές ημερομηνίας/ώρας μπορούν επίσης να κατασκευαστούν με χρήση της εγγενούς συνάρτησης #datetime
:
#datetime(year, month, day, hour, minute, second)
Τα παρακάτω πρέπει να περιέχουν ή να προκύπτει σφάλμα με τον κωδικό αιτιολογίας Expression.Error: 1 ≤ έτος ≤ 9999
1 ≤ μήνας ≤ 12
1 ≤ ημέρα ≤ 31
0 ≤ ώρα ≤ 23
0 ≤ λεπτά ≤ 59
0 ≤ δευτερόλεπτο ≤ 59
Επιπλέον, η ημέρα πρέπει να είναι έγκυρη για τον επιλεγμένο μήνα και έτος.
Οι ακόλουθοι τελεστές έχουν ορισθεί για τις τιμές ημερομηνίας/ώρας:
Τελεστής | Αποτέλεσμα |
---|---|
x = y |
Ίσο |
x <> y |
Δεν ισούται με |
x >= y |
Μεγαλύτερο από ή ίσο με |
x > y |
Μεγαλύτερο από |
x < y |
Μικρότερο από |
x <= y |
Μικρότερο από ή ίσο με |
x ?? y |
Coalesce |
Οι ακόλουθοι τελεστές επιτρέπουν σε έναν ή και στους δύο τελεστέους τους να είναι ημερομηνία/ώρα:
Τελεστής | Αριστερός τελεστέος | Δεξιός τελεστέος | Νόημα |
---|---|---|---|
x + y |
datetime |
duration |
Μετατόπιση ημερομηνίας/ώρας κατά διάρκεια |
x + y |
duration |
datetime |
Μετατόπιση ημερομηνίας/ώρας κατά διάρκεια |
x - y |
datetime |
duration |
Μετατόπιση ημερομηνίας/ώρας κατά αρνητική διάρκεια |
x - y |
datetime |
datetime |
Διάρκεια μεταξύ ημερομηνίες/ώρες |
Ο εγγενής τύπος τιμών ημερομηνίας/ώρας είναι ο εγγενής τύπος datetime
.
Μια τιμή ζώνης ημερομηνίας/ώρας περιέχει μια ημερομηνία/ώρα και μια ζώνη ώρας. Μια ζώνη ώρας κωδικοποιείται ως μετατόπιση αριθμού λεπτών από την UTC, το οποίο μετρά τον αριθμό των λεπτών που θα πρέπει να μετατοπίζεται το τμήμα ώρας της ημερομηνίας/ώρας από την Συντονισμένη παγκόσμια ώρα (UTC). Ο ελάχιστος αριθμός μετατόπισης σε λεπτά από την UTC είναι -840, που αντιπροσωπεύει μετατόπιση UTC -14:00 ή δεκατέσσερις ώρες νωρίτερα από την UTC. Ο μέγιστος αριθμός μετατόπισης σε λεπτά από την UTC είναι 840, που αντιστοιχεί σε μετατόπιση UTC 14:00.
Παρόλο που δεν υπάρχει σύνταξη λεκτικής σταθεράς για τις ζώνες ημερομηνίας/ώρας, παρέχονται πολλές τυπικές συναρτήσεις βιβλιοθήκης για τη δημιουργία τους. Οι ζώνες ημερομηνίας/ώρας μπορούν επίσης να κατασκευαστούν με χρήση της εγγενούς συνάρτησης #datetimezone
:
#datetimezone(
year, month, day,
hour, minute, second,
offset-hours, offset-minutes)
Τα παρακάτω πρέπει να ισχύουν, διαφορετικά, προκαλείται σφάλμα με κωδικό Expression.Error
αιτιολογίας :
1 ≤ έτος ≤ 9999
1 ≤ μήνας ≤ 12
1 ≤ ημέρα ≤ 31
0 ≤ ώρα ≤ 23
0 ≤ λεπτά ≤ 59
0 ≤ δευτερόλεπτο ≤ 59
-14 ≤ ώρες μετατόπισης ≤ 14
-59 ≤ λεπτά μετατόπισης ≤ 59
Επιπλέον, η ημέρα πρέπει να είναι έγκυρη για τον επιλεγμένο μήνα και έτος και, εάν οι ώρες διαφοράς από utc = 14, τότε τα λεπτά <διαφοράς από utc = 0 και, εάν οι ώρες διαφοράς από utc = -14, στη συνέχεια, τα λεπτά >διαφοράς από utc = 0.
Οι ακόλουθοι τελεστές έχουν ορισθεί για τις τιμές ζώνης ημερομηνίας/ώρας:
Τελεστής | Αποτέλεσμα |
---|---|
x = y |
Ίσο |
x <> y |
Δεν ισούται με |
x >= y |
Μεγαλύτερο από ή ίσο με |
x > y |
Μεγαλύτερο από |
x < y |
Μικρότερο από |
x <= y |
Μικρότερο από ή ίσο με |
x ?? y |
Coalesce |
Οι ακόλουθοι τελεστές επιτρέπουν σε έναν ή και στους δύο τελεστέους τους να είναι ζώνη ημερομηνίας/ώρας:
Τελεστής | Αριστερός τελεστέος | Δεξιός τελεστέος | Νόημα |
---|---|---|---|
x + y |
datetimezone |
duration |
Μετατόπιση ζώνης ημερομηνίας/ώρας κατά διάρκεια |
x + y |
duration |
datetimezone |
Μετατόπιση ζώνης ημερομηνίας/ώρας κατά διάρκεια |
x - y |
datetimezone |
duration |
Μετατόπιση ζώνης ημερομηνίας/ώρας κατά αρνητική διάρκεια |
x - y |
datetimezone |
datetimezone |
Διάρκεια μεταξύ ζωνών ημερομηνίας/ώρας |
Ο εγγενής τύπος τιμών ζώνης ημερομηνίας/ώρας είναι ο εγγενής τύπος datetimezone
.
Μια τιμή διάρκειας αποθηκεύει μια αδιαφανή αναπαράσταση της απόστασης μεταξύ δύο σημείων σε μια λωρίδα χρόνου που μετράται σε σήματα ρολογιού 100-νανοδευτεροεγγραφής. Το μέγεθος μιας διάρκειας μπορεί να είναι είτε θετικό είτε αρνητικό, με τις θετικές τιμές να υποδηλώνουν πρόοδο προς τα εμπρός στο χρόνο και τις αρνητικές τιμές να υποδηλώνουν πρόοδο προς τα πίσω στο χρόνο. Η ελάχιστη τιμή που μπορεί να αποθηκευτεί σε μια διάρκεια είναι -9.223.372.036.854.775.808 σήματα ρολογιού ή 10.675.199 ημέρες, 2 ώρες, 48 λεπτά και 05,4775808 δευτερόλεπτα προς τα πίσω στο χρόνο. Η μέγιστη τιμή που μπορεί να αποθηκευτεί σε διάρκεια είναι 9.223.372.036.854.775.807 σήματα ρολογιού ή 10.675.199 ημέρες, 2 ώρες, 48 λεπτά και 05,4775807 δευτερόλεπτα προς τα εμπρός στον χρόνο.
Παρόλο που δεν υπάρχει σύνταξη λεκτικής σταθεράς για διάρκειες, παρέχονται πολλές τυπικές συναρτήσεις βιβλιοθήκης για τη δημιουργία τους. Οι διάρκειες μπορούν επίσης να κατασκευαστούν με χρήση της εγγενούς συνάρτησης #duration
:
#duration(0, 0, 0, 5.5) // 5.5 seconds
#duration(0, 0, 0, -5.5) // -5.5 seconds
#duration(0, 0, 5, 30) // 5.5 minutes
#duration(0, 0, 5, -30) // 4.5 minutes
#duration(0, 24, 0, 0) // 1 day
#duration(1, 0, 0, 0) // 1 day
Οι ακόλουθοι τελεστές έχουν ορισθεί για τις τιμές διάρκειας:
Τελεστής | Αποτέλεσμα |
---|---|
x = y |
Ίσο |
x <> y |
Δεν ισούται με |
x >= y |
Μεγαλύτερο από ή ίσο με |
x > y |
Μεγαλύτερο από |
x < y |
Μικρότερο από |
x <= y |
Μικρότερο από ή ίσο με |
x ?? y |
Coalesce |
Επιπλέον, οι ακόλουθοι τελεστές επιτρέπουν σε έναν ή και στους δύο τελεστέους τους να έχουν τιμή διάρκειας:
Τελεστής | Αριστερός τελεστέος | Δεξιός τελεστέος | Νόημα |
---|---|---|---|
x + y |
datetime |
duration |
Μετατόπιση ημερομηνίας/ώρας κατά διάρκεια |
x + y |
duration |
datetime |
Μετατόπιση ημερομηνίας/ώρας κατά διάρκεια |
x + y |
duration |
duration |
Άθροισμα διαρκειών |
x - y |
datetime |
duration |
Μετατόπιση ημερομηνίας/ώρας κατά αρνητική διάρκεια |
x - y |
datetime |
datetime |
Διάρκεια μεταξύ ημερομηνίες/ώρες |
x - y |
duration |
duration |
Διαφορά διαρκειών |
x * y |
duration |
number |
N φορές τη διάρκεια |
x * y |
number |
duration |
N φορές τη διάρκεια |
x / y |
duration |
number |
Κλάσμα μιας διάρκειας |
Ο εγγενής τύπος τιμών διάρκειας είναι ο εγγενής τύπος duration
.
Μια τιμή κειμένου αντιπροσωπεύει μια ακολουθία χαρακτήρων Unicode. Οι τιμές κειμένου έχουν μια μορφή λεκτικής σταθεράς συμβατή με την παρακάτω γραμματική:
_text λεκτικής σταθεράς:
"
επιλογή χαρακτήρων λεκτικής-σταθεράςκειμένου "
χαρακτήρες-λεκτικής-σταθεράς-κειμένου:
επιλογή χαρακτήρων-λεκτικής-σταθεράς-κειμένου χαρακτήρων-λεκτικής-σταθεράς
χαρακτήρας-λεκτικής-σταθεράς-κειμένου:
χαρακτήρας-ενός κειμένου
χαρακτήρας-ακολουθία-διαφυγής
ακολουθία-διαφυγής-διπλών εισαγωγικών
χαρακτήρας-ενός κειμένου:
Οποιοσδήποτε χαρακτήρας εκτός από "
(U+0022
) ή #
(U+0023
) ακολουθούμενος από (
(U+0028
)
ακολουθία-διαφυγής-διπλών εισαγωγικών:
""
(U+0022
, U+0022
)
Ακολουθεί ένα παράδειγμα μιας τιμής κειμένου :
"ABC" // the text value ABC
Οι ακόλουθοι τελεστές έχουν ορισθεί για τις τιμές κειμένου :
Τελεστής | Αποτέλεσμα |
---|---|
x = y |
Ίσο |
x <> y |
Δεν ισούται με |
x >= y |
Μεγαλύτερο από ή ίσο με |
x > y |
Μεγαλύτερο από |
x < y |
Μικρότερο από |
x <= y |
Μικρότερο από ή ίσο με |
x & y |
Αλληλουχία |
x ?? y |
Coalesce |
Ο εγγενής τύπος τιμών κειμένου είναι ο εγγενής τύπος text
.
Μια δυαδική τιμή αντιπροσωπεύει μια ακολουθία byte.
Παρόλο που δεν υπάρχει σύνταξη λεκτικής σταθεράς για τις δυαδικές τιμές, παρέχονται πολλές τυπικές συναρτήσεις βιβλιοθήκης για τη δημιουργία τους. Οι δυαδικές τιμές μπορούν επίσης να κατασκευαστούν με χρήση της εγγενούς συνάρτησης #binary
.
Το παρακάτω παράδειγμα κατασκευάζει μια δυαδική τιμή από μια λίστα byte:
#binary( {0x00, 0x01, 0x02, 0x03} )
Οι ακόλουθοι τελεστές έχουν ορισθεί για τις δυαδικές τιμές:
Τελεστής | Αποτέλεσμα |
---|---|
x = y |
Ίσο |
x <> y |
Δεν ισούται με |
x >= y |
Μεγαλύτερο από ή ίσο με |
x > y |
Μεγαλύτερο από |
x < y |
Μικρότερο από |
x <= y |
Μικρότερο από ή ίσο με |
x ?? y |
Coalesce |
Ο εγγενής τύπος δυαδικών τιμών είναι ο εγγενής τύπος δυαδικός.
Μια τιμή λίστας είναι μια τιμή που παράγει μια ακολουθία τιμών κατά την απαρίθμηση. Μια τιμή που παράγεται από μια λίστα μπορεί να περιέχει οποιοδήποτε είδος τιμής, συμπεριλαμβανομένης μιας λίστας. Οι λίστες μπορούν να κατασκευαστούν με τη σύνταξη προετοιμασίας, ως εξής:
παράσταση λίστας:
{ επιλογή λίστας στοιχείων }
λίστα-στοιχείων:
είδος
,
λίστα στοιχείων
είδος:
έκφραση
παράσταση παράστασης..
Ακολουθεί ένα παράδειγμα μιας παράστασης-λίστας που ορίζει μια λίστα με τρεις τιμές κειμένου: "A"
, "B"
και "C"
.
{"A", "B", "C"}
Η τιμή "A"
είναι το πρώτο στοιχείο στη λίστα και η τιμή "C"
είναι το τελευταίο στοιχείο της λίστας.
- Τα στοιχεία μιας λίστας δεν αξιολογούνται μέχρι να αποκτήσουν πρόσβαση σε αυτά.
- Παρόλο που οι τιμές λίστας που κατασκευάζονται με τη σύνταξη λίστας θα παράγουν στοιχεία με τη σειρά που εμφανίζονται στη λίστα-στοιχείων, γενικά, οι λίστες που επιστρέφονται από συναρτήσεις βιβλιοθήκης μπορεί να παράγουν ένα διαφορετικό σύνολο ή διαφορετικό αριθμό τιμών κάθε φορά που απαριθμούνται.
Για να συμπεριλάβετε μια ακολουθία ακέραιου αριθμού σε μια λίστα, μπορεί να χρησιμοποιηθεί η a..b
μορφή:
{ 1, 5..9, 11 } // { 1, 5, 6, 7, 8, 9, 11 }
Ο αριθμός των στοιχείων σε μια λίστα, γνωστός ως πλήθος λίστας, μπορεί να προσδιοριστεί χρησιμοποιώντας τη List.Count
συνάρτηση.
List.Count({true, false}) // 2
List.Count({}) // 0
Μια λίστα μπορεί να έχει ουσιαστικά απεριόριστο αριθμό στοιχείων. List.Count
Για αυτές τις λίστες δεν έχει οριστεί και μπορεί είτε να προκαλέσει σφάλμα είτε να μην τερματιστεί.
Εάν μια λίστα δεν περιέχει στοιχεία, ονομάζεται κενή λίστα. Μια κενή λίστα γράφεται ως:
{} // empty list
Οι ακόλουθοι τελεστές έχουν ορισθεί για τις λίστες:
Τελεστής | Αποτέλεσμα |
---|---|
x = y |
Ίσο |
x <> y |
Δεν ισούται με |
x & y |
Concatenate |
x ?? y |
Coalesce |
Για παράδειγμα:
{1, 2} & {3, 4, 5} // {1, 2, 3, 4, 5}
{1, 2} = {1, 2} // true
{2, 1} <> {1, 2} // true
Ο εγγενής τύπος τιμών λίστας είναι ο εγγενής τύπος list
, ο οποίος καθορίζει έναν τύπο στοιχείου του any
.
Μια τιμή εγγραφής είναι μια ταξινομημένη ακολουθία πεδίων. Ένα πεδίο αποτελείται από ένα όνομα πεδίου, το οποίο είναι μια τιμή κειμένου που προσδιορίζει με μοναδικό τρόπο το πεδίο μέσα στην εγγραφή και μια τιμή πεδίου. Η τιμή πεδίου μπορεί να είναι οποιοδήποτε είδος τιμής, συμπεριλαμβανομένης της εγγραφής. Οι εγγραφές μπορούν να κατασκευαστούν με τη σύνταξη προετοιμασίας, ως εξής:
παράσταση-εγγραφής:
[
επιλογή λίστας πεδίων ]
λίστα-πεδίων:
αγρός
λίστα-πεδίων πεδίου,
αγρός:
παράσταση ονόματος =
πεδίου
όνομα-πεδίου:
γενικευμένο αναγνωριστικό
αναγνωριστικό-σε εισαγωγικά
Το παρακάτω παράδειγμα κατασκευάζει μια εγγραφή με ένα πεδίο με την ονομασία x
με τιμή 1
και ένα πεδίο με την ονομασία y
με τιμή 2
.
[ x = 1, y = 2 ]
Το παρακάτω παράδειγμα κατασκευάζει μια εγγραφή με πεδίο με a
την ονομασία a με μια ένθεστη τιμή εγγραφής. Η ένθετης εγγραφή έχει ένα πεδίο με την ονομασία b
με τιμή 2
.
[ a = [ b = 2 ] ]
Κατά την αξιολόγηση μιας παράστασης εγγραφής ισχύουν τα ακόλουθα:
Η παράσταση που έχει αντιστοιχιστεί σε κάθε όνομα πεδίου χρησιμοποιείται για τον προσδιορισμό της τιμής του συσχετισμένου πεδίου.
Εάν η παράσταση που εκχωρείται σε ένα όνομα πεδίου παράγει μια τιμή κατά την αξιολόγηση, τότε αυτή γίνεται η τιμή του πεδίου της εγγραφής που προκύπτει.
Εάν η παράσταση που έχει αντιστοιχιστεί σε ένα όνομα πεδίου προκαλέσει σφάλμα κατά την αξιολόγηση, τότε το γεγονός ότι προέκυψε σφάλμα καταγράφεται με το πεδίο μαζί με την τιμή σφάλματος που προέκυψε. Η μετέπειτα πρόσβαση σε αυτό το πεδίο θα προκαλέσει εκ νέου εμφάνιση ενός σφάλματος με την καταγεγραμμένη τιμή σφάλματος.
Η παράσταση αξιολογείται σε ένα περιβάλλον όπως το γονικό περιβάλλον μόνο με μεταβλητές συγχωνευμένες, οι οποίες αντιστοιχούν στην τιμή κάθε πεδίου της εγγραφής, εκτός από αυτό που προετοιμάζεται.
Μια τιμή σε μια εγγραφή δεν αξιολογείται μέχρι την πρόσβαση στο αντίστοιχο πεδίο.
Μια τιμή σε μια εγγραφή αξιολογείται το πολύ μία φορά.
Το αποτέλεσμα της παράστασης είναι μια τιμή εγγραφής με κενή εγγραφή μετα-δεδομένων.
Η σειρά των πεδίων μέσα στην εγγραφή ορίζεται από τη σειρά εμφάνισης τους στην παράσταση-προετοιμασίας-εγγραφής.
Κάθε όνομα πεδίου που καθορίζεται πρέπει να είναι μοναδικό εντός της εγγραφής, διαφορετικά, πρόκειται για σφάλμα. Τα ονόματα συγκρίνονται χρησιμοποιώντας μια σύγκριση κατάταξης.
[ x = 1, x = 2 ] // error: field names must be unique
[ X = 1, x = 2 ] // OK
Μια εγγραφή χωρίς πεδία ονομάζεται κενή εγγραφή και γράφεται ως εξής:
[] // empty record
Παρόλο που η σειρά των πεδίων μιας εγγραφής δεν είναι σημαντική κατά την πρόσβαση σε ένα πεδίο ή τη σύγκριση δύο εγγραφών, είναι σημαντική σε άλλα περιβάλλοντα, όπως όταν απαριθμούνται τα πεδία μιας εγγραφής.
Οι ίδιες δύο εγγραφές παράγουν διαφορετικά αποτελέσματα όταν λαμβάνονται τα πεδία:
Record.FieldNames([ x = 1, y = 2 ]) // [ "x", "y" ]
Record.FieldNames([ y = 1, x = 2 ]) // [ "y", "x" ]
Ο αριθμός πεδίων σε μια εγγραφή μπορεί να προσδιοριστεί με χρήση της συνάρτησης Record.FieldCount
. Για παράδειγμα:
Record.FieldCount([ x = 1, y = 2 }) // 2
Record.FieldCount([]) // 0
Εκτός από τη χρήση της σύνταξης [ ]
προετοιμασίας εγγραφής, οι εγγραφές μπορούν να κατασκευαστούν από μια λίστα τιμών και μια λίστα ονομάτων πεδίων ή τύπου εγγραφής. Για παράδειγμα:
Record.FromList({1, 2}, {"a", "b"})
Το παραπάνω ισοδυναμεί με:
[ a = 1, b = 2 ]
Οι ακόλουθοι τελεστές έχουν ορισθεί για τις τιμές εγγραφής:
Τελεστής | Αποτέλεσμα |
---|---|
x = y |
Ίσο |
x <> y |
Δεν ισούται με |
x & y |
Συγχώνευση |
x ?? y |
Coalesce |
Τα παρακάτω παραδείγματα απεικονίζουν τους παραπάνω τελεστές. Σημειώστε ότι η συγχώνευση εγγραφών χρησιμοποιεί τα πεδία από τον δεξιό τελεστέο για να παρακάμψει τα πεδία από τον αριστερό τελεστέο, σε περίπτωση που υπάρχει επικάλυψη στα ονόματα πεδίων.
[ a = 1, b = 2 ] & [ c = 3 ] // [ a = 1, b = 2, c = 3 ]
[ a = 1, b = 2 ] & [ a = 3 ] // [ a = 3, b = 2 ]
[ a = 1, b = 2 ] = [ b = 2, a = 1 ] // true
[ a = 1, b = 2, c = 3 ] <> [ a = 1, b = 2 ] // true
Ο εγγενής τύπος τιμών εγγραφής είναι ο εγγενής τύπος record
, ο οποίος καθορίζει μια ανοιχτή κενή λίστα πεδίων.
Μια τιμή πίνακα είναι μια ταξινομημένη ακολουθία γραμμών. Μια γραμμή είναι μια ταξινομημένη ακολουθία τιμών στήλης. Ο τύπος του πίνακα προσδιορίζει το μήκος όλων των γραμμών του πίνακα, τα ονόματα των στηλών του πίνακα, τους τύπους των στηλών του πίνακα και τη δομή των κλειδιών του πίνακα (εάν υπάρχουν).
Παρόλο που δεν υπάρχει σύνταξη λεκτικής σταθεράς για πίνακες, παρέχονται πολλές τυπικές συναρτήσεις βιβλιοθήκης για τη δημιουργία τους. Οι πίνακες μπορούν επίσης να κατασκευαστούν με χρήση της εγγενούς συνάρτησης #table
.
Το παρακάτω παράδειγμα κατασκευάζει έναν πίνακα από μια λίστα ονομάτων στηλών και μια λίστα γραμμών. Ο πίνακας που θα προκύψει θα περιέχει δύο στήλες type any
και τρεις γραμμές.
#table({"x", "x^2"}, {{1,1}, {2,4}, {3,9}})
#table
Το μπορεί επίσης να χρησιμοποιηθεί για τον καθορισμό ενός πλήρους τύπου πίνακα:
#table(
type table [Digit = number, Name = text],
{{1,"one"}, {2,"two"}, {3,"three"}}
)
Εδώ η τιμή του νέου πίνακα έχει έναν τύπο πίνακα που καθορίζει τα ονόματα στηλών και τους τύπους στηλών.
Οι ακόλουθοι τελεστές έχουν ορισθεί για τις τιμές πίνακα:
Τελεστής | Αποτέλεσμα |
---|---|
x = y |
Ίσο |
x <> y |
Δεν ισούται με |
x & y |
Αλληλουχία |
x ?? y |
Coalesce |
Η συνένωση πίνακα στοιχίζει στήλες με το ίδιο όνομα και συμπληρώνει null
το για στήλες που εμφανίζονται μόνο σε έναν από τους πίνακες τελεστέου. Το παρακάτω παράδειγμα απεικονίζει τη συνένωση πίνακα:
#table({"A","B"}, {{1,2}})
& #table({"B","C"}, {{3,4}})
A | B | C |
---|---|---|
1 |
2 |
null |
null |
3 |
4 |
Ο εγγενής τύπος τιμών πίνακα είναι ένας προσαρμοσμένος τύπος πίνακα (που προέρχεται από τον εγγενή τύπο table
) που παραθέτει τα ονόματα των στηλών, καθορίζει όλους τους τύπους στηλών που θα υπάρχουν και δεν έχει κλειδιά. (Μετάβαση σε Τύποι πινάκων για λεπτομέρειες σχετικά με τους τύπους πινάκων.)
Μια τιμή συνάρτησης είναι μια τιμή που αντιστοιχίζει ένα σύνολο ορισμάτων σε μια μοναδική τιμή. Οι λεπτομέρειες των τιμών συναρτήσεων περιγράφονται στις Συναρτήσεις.
Μια τιμή τύπου είναι μια τιμή που ταξινομεί άλλες τιμές. Οι λεπτομέρειες των τιμών τύπου περιγράφονται στους Τύπους.