Συμπεριφορά τελεστών
Αυτή η ενότητα καθορίζει τη συμπεριφορά των διαφόρων τελεστών M.
Προτεραιότητα τελεστών
Όταν μια παράσταση περιέχει πολλούς τελεστές, η προτεραιότητα των τελεστών ελέγχει τη σειρά με την οποία αξιολογούνται οι μεμονωμένοι τελεστές. Για παράδειγμα, η παράσταση x + y * z
αξιολογείται ως επειδή x + (y * z)
ο *
τελεστής έχει υψηλότερη προτεραιότητα από τον δυαδικό +
τελεστή. Η προτεραιότητα ενός τελεστή καθορίζεται από τον ορισμό της σχετικής παραγωγής γραμματικής του. Για παράδειγμα, μια προσθετική-παράσταση αποτελείται από μια ακολουθία πολλαπλασιαστικής-παράστασης που διαχωρίζεται από τους τελεστές ή+
, παρέχοντας -
έτσι στους τελεστές και +
χαμηλότερη προτεραιότητα από -
τους τελεστές και*
./
Η παραγωγή παράστασης-σε παρένθεση μπορεί να χρησιμοποιηθεί για την αλλαγή της προεπιλεγμένης σειράς προτεραιότητας.
παράσταση-σε παρένθεση:
(
έκφραση)
Για παράδειγμα:
1 + 2 * 3 // 7
(1 + 2) * 3 // 9
Ο παρακάτω πίνακας συνοψίζει τους τελεστές M, παραθέτει τις κατηγορίες τελεστών με σειρά προτεραιότητας από τον υψηλότερο προς τον χαμηλότερο. Οι τελεστές στην ίδια κατηγορία έχουν ίση προτεραιότητα.
Category | Expression | Περιγραφή |
---|---|---|
Βασική |
εγώ @ εγώ |
Παράσταση αναγνωριστικού |
(x) | Παράσταση σε παρένθεση | |
x[i] | Αναζήτηση | |
x{y} | Πρόσβαση στοιχείου | |
x(...) | Κλήση συνάρτησης | |
{x, y, ...} | Προετοιμασία λίστας | |
[ i = x, ... ] | Προετοιμασία εγγραφής | |
... | Δεν έχει υλοποιηθεί | |
Μοναδιαίοι | + x | Ταυτότητα |
- x | Άρνηση | |
not
x |
Λογική άρνηση | |
Μετα-δεδομένα |
xmeta y |
Συσχέτιση μετα-δεδομένων |
Πολλαπλασιαστική | x * y | Πολλαπλασιασμός |
x / y | Διεύθυνση | |
Πρόσθετο | x + y | Πρόσθεση |
x - y | Αφαίρεση | |
Σχεσιακός | x< y | Μικρότερο από |
x > y | Μεγαλύτερο από | |
x<= y | Μικρότερο από ή ίσο με | |
x >= y | Μεγαλύτερο από ή ίσο με | |
Ισότητα | x = y | Ίσο |
x<> y | Δεν ισούται με | |
Δήλωση τύπου |
xas y |
Είναι συμβατό με στοιχειώδη τύπο που επιδέχεται τιμές null ή σφάλμα |
Συμμόρφωση τύπου |
xis y |
Δοκιμή εάν είναι συμβατό με στοιχειώδη τύπο που επιδέχεται τιμή null |
Λογικό AND |
xand y |
Σύνδεση βραχυκυκλώματος |
Λογικό OR |
xor y |
Αποσύνδεση βραχυκυκλώματος |
Coalesce |
x?? y |
Τελεστής συνένωσης Null |
Τελεστές και μετα-δεδομένα
Κάθε τιμή έχει μια συσχετισμένη τιμή εγγραφής που μπορεί να μεταφέρει πρόσθετες πληροφορίες σχετικά με την τιμή. Αυτή η εγγραφή αναφέρεται ως εγγραφή μετα-δεδομένων για μια τιμή. Μια εγγραφή μετα-δεδομένων μπορεί να συσχετιστεί με οποιοδήποτε είδος τιμής, ακόμα και null
. Το αποτέλεσμα μιας τέτοιας συσχέτισης είναι μια νέα τιμή με τα δεδομένα που έχουν καταχωριστεί.
Μια εγγραφή μετα-δεδομένων είναι απλώς μια κανονική εγγραφή και μπορεί να περιέχει οποιαδήποτε πεδία και τιμές που μπορεί να έχει και μια κανονική εγγραφή και η ίδια μια εγγραφή μετα-δεδομένων. Ο συσχετισμός μιας εγγραφής μετα-δεδομένων με μια τιμή είναι "μη παρεμβατικός". Δεν αλλάζει τη συμπεριφορά της τιμής στις αξιολογήσεις, εκτός από εκείνες που εξετάζουν ρητά εγγραφές μετα-δεδομένων.
Κάθε τιμή έχει μια προεπιλεγμένη εγγραφή μετα-δεδομένων, ακόμα και αν δεν έχει καθοριστεί κάποια. Η προεπιλεγμένη εγγραφή μετα-δεδομένων είναι κενή. Τα παρακάτω παραδείγματα δείχνουν την πρόσβαση στην εγγραφή μετα-δεδομένων μιας τιμής κειμένου χρησιμοποιώντας την Value.Metadata
τυπική συνάρτηση βιβλιοθήκης:
Value.Metadata( "Mozart" ) // []
Οι εγγραφές μετα-δεδομένων συνήθως δεν διατηρούνται όταν μια τιμή χρησιμοποιείται με έναν τελεστή ή μια συνάρτηση που κατασκευάζει μια νέα τιμή. Για παράδειγμα, εάν δύο τιμές κειμένου συνενώνονται με τον &
τελεστή , τα μετα-δεδομένα της τιμής κειμένου που προκύπτει είναι η κενή εγγραφή []
. Οι παρακάτω παραστάσεις είναι ισοδύναμες:
"Amadeus " & ("Mozart" meta [ Rating = 5 ])
"Amadeus " & "Mozart"
Οι τυπικές συναρτήσεις Value.RemoveMetadata
βιβλιοθήκης και Value.ReplaceMetadata
μπορούν να χρησιμοποιηθούν για την κατάργηση όλων των μετα-δεδομένων από μια τιμή και για την αντικατάσταση των μετα-δεδομένων μιας τιμής (αντί για τη συγχώνευση μετα-δεδομένων σε πιθανά υπάρχοντα μετα-δεδομένα).
Ο μόνος τελεστής που επιστρέφει αποτελέσματα που μεταφέρουν μετα-δεδομένα είναι ο μετα-τελεστής.
Δομικά επαναλαμβανόμενοι τελεστές
Οι τιμές μπορεί να είναι κυκλικές. Για παράδειγμα:
let l = {0, @l} in l
// {0, {0, {0, ... }}}
[A={B}, B={A}]
// [A = {{ ... }}, B = {{ ... }}]
Η M χειρίζεται τις κυκλικές τιμές διατηρώντας αργή την κατασκευή εγγραφών, λιστών και πινάκων. Μια προσπάθεια κατασκευής μιας κυκλικής τιμής που δεν επωφελείται από τις διακοπτόμενες, αργής δομής τιμές, δημιουργεί σφάλμα:
[A=B, B=A]
// [A = Error.Record("Expression.Error",
// "A cyclic reference was encountered during evaluation"),
// B = Error.Record("Expression.Error",
// "A cyclic reference was encountered during evaluation"),
// ]
Ορισμένοι τελεστές στην M ορίζονται με δομική επανάληψη. Για παράδειγμα, η ισότητα εγγραφών και λιστών ορίζεται από την ταυτόχρονη ισότητα των αντίστοιχων πεδίων εγγραφών και λιστών στοιχείων, αντίστοιχα.
Για μη κυκλικές τιμές, η εφαρμογή δομικής επανάληψης αποδίδει πεπερασμένη επέκταση της τιμής: οι κοινόχρηστες ένθετες τιμές θα χρησιμοποιούνται επανειλημμένα, αλλά η διαδικασία επανάληψης πάντα τερματίζεται.
Μια κυκλική τιμή έχει ατέρμονα επέκταση κατά την εφαρμογή δομικής επανάληψης. Η σημασιολογία της M δεν διαθέτει ειδικούς χώρους διαμονής για τέτοιες άπειρες επεκτάσεις - μια προσπάθεια σύγκρισης κυκλικών τιμών για ισότητα, για παράδειγμα, συνήθως θα εξαντληθεί από πόρους και θα τερματιστεί κατ' εξαίρεση.
Τελεστές επιλογής και προβολής
Οι τελεστές επιλογής και προβολής επιτρέπουν την εξαγωγή δεδομένων από τιμές λίστας και εγγραφής.
Πρόσβαση στοιχείου
Μια τιμή μπορεί να επιλεγεί από μια λίστα ή έναν πίνακα με βάση τη θέση του με βάση το μηδέν εντός αυτής της λίστας ή του πίνακα, χρησιμοποιώντας μια παράσταση-πρόσβασης-στοιχείου.
παράσταση-πρόσβασης-στοιχείου:
επιλογή στοιχείου
προαιρετική-επιλογή-στοιχείου
επιλογή-στοιχείου:
κύρια-παράσταση{
επιλογέας-στοιχείου}
προαιρετική-επιλογή-στοιχείου:
κύρια-παράσταση{
επιλογέας-στοιχείου} ?
επιλογέας-στοιχείου:
έκφραση
Η παράσταση-πρόσβασης-στοιχείουx{y}
επιστρέφει:
Για μια λίστα
x
και έναν αριθμόy
, το στοιχείο της λίσταςx
στη θέσηy
. Το πρώτο στοιχείο μιας λίστας θεωρείται ότι έχει έναν τακτικό δείκτη μηδέν. Εάν η ζητούμενη θέση δεν υπάρχει στη λίστα, προκαλείται σφάλμα.Για έναν πίνακα
x
και έναν αριθμόy
, τη γραμμή του πίνακαx
στη θέσηy
. Η πρώτη γραμμή ενός πίνακα θεωρείται ότι έχει τακτικό δείκτη μηδέν. Εάν η ζητούμενη θέση δεν υπάρχει στον πίνακα, προκαλείται σφάλμα.Για έναν πίνακα
x
και μια εγγραφήy
, τη γραμμή του πίνακαx
που συμφωνεί με τις τιμές πεδίου της εγγραφήςy
για πεδία με ονόματα πεδίων που συμφωνούν με τα αντίστοιχα ονόματα στήλης-πίνακα. Εάν δεν υπάρχει μοναδική αντίστοιχη γραμμή στον πίνακα, προκαλείται σφάλμα.
Για παράδειγμα:
{"a","b","c"}{0} // "a"
{1, [A=2], 3}{1} // [A=2]
{true, false}{2} // error
#table({"A","B"},{{0,1},{2,1}}){0} // [A=0,B=1]
#table({"A","B"},{{0,1},{2,1}}){[A=2]} // [A=2,B=1]
#table({"A","B"},{{0,1},{2,1}}){[B=3]} // error
#table({"A","B"},{{0,1},{2,1}}){[B=1]} // error
Η παράσταση-πρόσβασης-στοιχείου υποστηρίζει επίσης τη φόρμα x{y}?
, η οποία επιστρέφει null
όταν η θέση (ή η αντιστοιχία) y
δεν υπάρχει στη λίστα ή τον πίνακα x
. Εάν υπάρχουν πολλές αντιστοιχίες για y
το , εξακολουθεί να προκαλείται σφάλμα.
Για παράδειγμα:
{"a","b","c"}{0}? // "a"
{1, [A=2], 3}{1}? // [A=2]
{true, false}{2}? // null
#table({"A","B"},{{0,1},{2,1}}){0}? // [A=0,B=1]
#table({"A","B"},{{0,1},{2,1}}){[A=2]}? // [A=2,B=1]
#table({"A","B"},{{0,1},{2,1}}){[B=3]}? // null
#table({"A","B"},{{0,1},{2,1}}){[B=1]}? // error
Η πρόσβαση στο στοιχείο δεν επιβάλλει την αξιολόγηση των στοιχείων λίστας ή πίνακα εκτός από αυτό που αποκτάται πρόσβαση. Για παράδειγμα:
{ error "a", 1, error "c"}{1} // 1
{ error "a", error "b"}{1} // error "b"
Τα παρακάτω ισχύουν κατά την αξιολόγηση του τελεστή x{y}
πρόσβασης στοιχείου:
Τα σφάλματα που προέκυψαν κατά την αξιολόγηση των παραστάσεων
x
ήy
μεταδίδονται.Η παράσταση
x
παράγει μια λίστα ή μια τιμή πίνακα.Η παράσταση
y
παράγει μια αριθμητική τιμή ή, εάνx
το παράγει μια τιμή πίνακα, μια τιμή εγγραφής.Εάν
y
το παράγει μια αριθμητική τιμή και η τιμή τουy
είναι αρνητική, προκαλείται σφάλμα με τον κωδικό"Expression.Error"
αιτιολογίας .Εάν
y
το παράγει μια αριθμητική τιμή και η τιμή τουy
είναι μεγαλύτερη από ή ίση με το πλήθος τωνx
, ενεργοποιείται ένα σφάλμα με κωδικό"Expression.Error"
αιτιολογίας , εκτός εάν χρησιμοποιείται η προαιρετική φόρμαx{y}?
τελεστή , όπου στην περίπτωση αυτή επιστρέφεται η τιμήnull
.Εάν
x
το παράγει μια τιμή πίνακα καιy
το παράγει μια τιμή εγγραφής και δεν υπάρχουν αντιστοιχίες γιαy
το στοx
, ενεργοποιείται ένα σφάλμα με τον κωδικό"Expression.Error"
αιτιολογίας , εκτός εάν χρησιμοποιείται η προαιρετική φόρμαx{y}?
τελεστή , όπου στην περίπτωση αυτή επιστρέφεται η τιμήnull
.Εάν
x
το παράγει μια τιμή πίνακα καιy
το παράγει μια τιμή εγγραφής και υπάρχουν πολλές αντιστοιχίες γιαy
το στοx
, ενεργοποιείται ένα σφάλμα με τον κωδικό"Expression.Error"
αιτιολογίας .
Κατά τη διάρκεια της διαδικασίας επιλογής στοιχείου, δεν αξιολογείται κανένα άλλο στοιχείο εκτός x
από εκείνο στη θέση y
. (Για λίστες ή πίνακες ροής, τα στοιχεία ή οι γραμμές που προηγούνται αυτού στη θέση y
παραλείπονται, το οποίο μπορεί να προκαλέσει την αξιολόγησή τους, ανάλογα με την προέλευση της λίστας ή του πίνακα.)
Πρόσβαση πεδίου
Η παράσταση-πρόσβασης-πεδίου χρησιμοποιείται για την επιλογή μιας τιμής από μια εγγραφή ή για την προβολή μιας εγγραφής ή ενός πίνακα σε ένα με λιγότερα πεδία ή στήλες, αντίστοιχα.
παράσταση-πρόσβασης-πεδίου:
επιλογή πεδίου
σιωπηρή-επιλογή-πεδίου-προορισμού
προβολή
έμμεση-προβολή-προορισμού
επιλογή πεδίου:
κύρια-παράσταση επιλογέας-πεδίου
επιλογέας-πεδίου:
επιλογέας-απαιτούμενου-πεδίου
επιλογέας-προαιρετικού-πεδίου
επιλογέας-απαιτούμενου-πεδίου:
[
όνομα-πεδίου]
επιλογέας-προαιρετικού-πεδίου:
[
όνομα-πεδίου] ?
όνομα-πεδίου:
γενικευμένο αναγνωριστικό
αναγνωριστικό-σε εισαγωγικά
έμμεση-επιλογή-πεδίου-προορισμού:
επιλογέας-πεδίου
προβολή:
κύρια-παράσταση απαιτούμενη-προβολή
κύρια-παράσταση προαιρετική-προβολή
απαιτούμενη-προβολή:
[
επιλογέας-απαιτούμενης-λίστας]
προαιρετική-προβολή:
[
επιλογέας-απαιτούμενης-λίστας] ?
επιλογέας-απαιτούμενης-λίστας:
επιλογέας-απαιτούμενου-πεδίου
επιλογέας-απαιτούμενης-λίστας,
επιλογέας-απαιτούμενου-πεδίου
έμμεση-προβολή-προορισμού:
απαιτούμενη-προβολή
προαιρετική-προβολή
Η απλούστερη μορφή πρόσβασης στο πεδίο είναι η επιλογή απαιτούμενου πεδίου. Χρησιμοποιεί τον τελεστή x[y]
για την αναζήτηση ενός πεδίου σε μια εγγραφή κατά όνομα πεδίου. Εάν το πεδίο y
δεν υπάρχει στο x
, προκαλείται σφάλμα. Η φόρμα x[y]?
χρησιμοποιείται για την εκτέλεση προαιρετικής επιλογής πεδίου και επιστρέφει null
εάν το πεδίο που ζητήθηκε δεν υπάρχει στην εγγραφή.
Για παράδειγμα:
[A=1,B=2][B] // 2
[A=1,B=2][C] // error
[A=1,B=2][C]? // null
Η συλλογική πρόσβαση σε πολλαπλά πεδία υποστηρίζεται από τους τελεστές για την απαιτούμενη προβολή εγγραφής και προαιρετική προβολή εγγραφής. Ο τελεστής x[[y1],[y2],...]
προβάλει την εγγραφή σε μια νέα εγγραφή με λιγότερα πεδία (επιλεγμένα κατά y1
, y2
, ...
). Εάν δεν υπάρχει επιλεγμένο πεδίο, προκαλείται σφάλμα. Ο τελεστής x[[y1],[y2],...]?
προβάλει την εγγραφή σε μια νέα εγγραφή με τα πεδία που έχουν επιλεγεί κατά y1
, y2
, ...
. Εάν λείπει ένα πεδίο, null
χρησιμοποιείται η τιμή αντί για αυτό.
Για παράδειγμα:
[A=1,B=2][[B]] // [B=2]
[A=1,B=2][[C]] // error
[A=1,B=2][[B],[C]]? // [B=2,C=null]
Οι φόρμες [y]
και [y]?
υποστηρίζονται ως αναφορά στενογραφίας στο αναγνωριστικό _
(χαρακτήρας υπογράμμισης). Οι παρακάτω δύο παραστάσεις είναι ισοδύναμες:
[A]
_[A]
Το παρακάτω παράδειγμα απεικονίζει τη μορφή στενογραφίας της πρόσβασης πεδίου:
let _ = [A=1,B=2] in [A] //1
Η φόρμα [[y1],[y2],...]
και [[y1],[y2],...]?
υποστηρίζονται επίσης ως στενογραφία και οι παρακάτω δύο παραστάσεις είναι εξίσου ισοδύναμες:
[[A],[B]]
_[[A],[B]]
Η φόρμα στενογραφίας είναι ιδιαίτερα χρήσιμη σε συνδυασμό με τη each
στενογραφία, ένας τρόπος για να εισαγάγετε μια συνάρτηση μιας μεμονωμένης παραμέτρου με την ονομασία _
(για λεπτομέρειες, ανατρέξτε στις Απλοποιημένες δηλώσεις). Μαζί, οι δύο συντομογραφίες απλοποιούν τις κοινές λειτουργικές παραστάσεις υψηλότερης τάξης:
List.Select( {[a=1, b=1], [a=2, b=4]}, each [a] = [b])
// {[a=1, b=1]}
Η παραπάνω παράσταση ισοδυναμεί με την παρακάτω πιο αινιγματική γραφή:
List.Select( {[a=1, b=1], [a=2, b=4]}, (_) => _[a] = _[b])
// {[a=1, b=1]}
Η πρόσβαση πεδίου δεν επιβάλλει την αξιολόγηση των πεδίων εκτός από αυτά στα οποία γίνεται πρόσβαση. Για παράδειγμα:
[A=error "a", B=1, C=error "c"][B] // 1
[A=error "a", B=error "b"][B] // error "b"
Τα παρακάτω ισχύουν κατά την αξιολόγηση ενός τελεστή x[y]
πρόσβασης πεδίου , x[y]?
, x[[y]]
ή x[[y]]?
:
Τα σφάλματα που προέκυψαν κατά την αξιολόγηση της παράστασης
x
μεταδίδονται.Τα σφάλματα που προέκυψαν κατά την αξιολόγηση του πεδίου
y
συσχετίζονται μόνιμα με το πεδίοy
και, στη συνέχεια, μεταδίδονται. Οποιαδήποτε μελλοντική πρόσβαση στο πεδίοy
θα προκαλέσει πανομοιότυπο σφάλμα.Η παράσταση
x
παράγει μια τιμή εγγραφής ή πίνακα ή προκαλείται σφάλμα.Εάν το αναγνωριστικό
y
ονομάζει ένα πεδίο που δεν υπάρχει στοx
, ενεργοποιείται ένα σφάλμα με τον κωδικό"Expression.Error"
αιτιολογίας , εκτός εάν χρησιμοποιείται η προαιρετική φόρμα...?
τελεστή , στην οποία περίπτωση επιστρέφεται η τιμήnull
.
Δεν αξιολογούνται πεδία του εκτός από x
αυτό που ονομάζεται από y
το κατά τη διαδικασία πρόσβασης στο πεδίο.
Τελεστής μετα-δεδομένων
Η εγγραφή μετα-δεδομένων για μια τιμή τροποποιείται με χρήση του τελεστή μετα-δεδομένων (x meta y
).
παράσταση-μετα-δεδομένων:
μοναδιαία-παράσταση
μοναδιαία-παράστασηmeta
μοναδιαία-παράσταση
Το παρακάτω παράδειγμα κατασκευάζει μια τιμή κειμένου με μια εγγραφή μετα-δεδομένων που χρησιμοποιεί τον meta
τελεστή και, στη συνέχεια, αποκτά πρόσβαση στην εγγραφή μετα-δεδομένων της τιμής που προκύπτει χρησιμοποιώντας Value.Metadata
το :
Value.Metadata( "Mozart" meta [ Rating = 5 ] )
// [Rating = 5 ]
Value.Metadata( "Mozart" meta [ Rating = 5 ] )[Rating]
// 5
Τα παρακάτω ισχύουν κατά την εφαρμογή των μετα-δεδομένων που συνδυάζουν τον τελεστή x meta y
:
Τα σφάλματα που προέκυψαν κατά την αξιολόγηση των
x
παραστάσεων ory
μεταδίδονται.Η
y
παράσταση πρέπει να είναι εγγραφή, διαφορετικά προκαλείται σφάλμα με τον κωδικό"Expression.Error"
αιτιολογίας .Η εγγραφή μετα-δεδομένων που προκύπτει είναι
x
η εγγραφή μετα-δεδομένων του που συγχωνεύεται μεy
το . (Για τη σημασιολογία της συγχώνευσης εγγραφών, ανατρέξτε στο θέμα Συγχώνευση εγγραφών.)Η τιμή που προκύπτει είναι η τιμή από την
x
παράσταση, χωρίς τα μετα-δεδομένα της, με συνημμένη την εγγραφή μετα-δεδομένων που υπολογίστηκε πρόσφατα.
Οι τυπικές συναρτήσεις Value.RemoveMetadata
βιβλιοθήκης και Value.ReplaceMetadata
μπορούν να χρησιμοποιηθούν για την κατάργηση όλων των μετα-δεδομένων από μια τιμή και για την αντικατάσταση των μετα-δεδομένων μιας τιμής (αντί για τη συγχώνευση μετα-δεδομένων σε πιθανά υπάρχοντα μετα-δεδομένα). Οι παρακάτω παραστάσεις είναι ισοδύναμες:
x meta y
Value.ReplaceMetadata(x, Value.Metadata(x) & y)
Value.RemoveMetadata(x) meta (Value.Metadata(x) & y)
Τελεστές ισότητας
Ο τελεστής ισότητας=
χρησιμοποιείται για να προσδιοριστεί εάν δύο τιμές είναι ίσες. Ο τελεστής ανισότητας<>
χρησιμοποιείται για να προσδιοριστεί αν δύο τιμές δεν είναι ίσες.
παράσταση-ισότητας:
σχεσιακή-παράσταση
σχεσιακή-παράσταση=
παράσταση-ισότητας
σχεσιακή-παράσταση<>
παράσταση-ισότητας
Για παράδειγμα:
1 = 1 // true
1 = 2 // false
1 <> 1 // false
1 <> 2 // true
null = true // false
null = null // true
Τα μετα-δεδομένα δεν αποτελούν μέρος της σύγκρισης ισότητας ή ανισότητας. Για παράδειγμα:
(1 meta [ a = 1 ]) = (1 meta [ a = 2 ]) // true
(1 meta [ a = 1 ]) = 1 // true
Τα παρακάτω ισχύουν κατά την εφαρμογή των τελεστών x = y
ισότητας και x <> y
:
Τα σφάλματα που προέκυψαν κατά την αξιολόγηση των
x
παραστάσεων ory
μεταδίδονται.Ο
=
τελεστής έχει ως αποτέλεσμαtrue
εάν οι τιμές είναι ίσες καιfalse
σε κάθε άλλη περίπτωση.Ο
<>
τελεστής έχει ως αποτέλεσμαfalse
εάν οι τιμές είναι ίσες καιtrue
σε κάθε άλλη περίπτωση.Οι εγγραφές μετα-δεδομένων δεν περιλαμβάνονται στη σύγκριση.
Εάν οι τιμές που παράγονται από την αξιολόγηση των
x
παραστάσεων καιy
δεν είναι το ίδιο είδος τιμής, τότε οι τιμές δεν είναι ίσες.Εάν οι τιμές που παράγονται από την αξιολόγηση της
x
παράστασης καιy
είναι του ίδιου είδους τιμής, τότε υπάρχουν συγκεκριμένοι κανόνες για τον προσδιορισμό του αν είναι ίσες, όπως ορίζεται παρακάτω.Τα παρακάτω είναι πάντα true:
(x = y) = not (x <> y)
Οι τελεστές ισότητας ορίζονται για τους ακόλουθους τύπους:
- Η
null
τιμή ισούται μόνο με τον εαυτό της.
null = null // true
null = true // false
null = false // false
- Οι λογικές τιμές και
true
είναι ίσεςfalse
μόνο με τον εαυτό τους. Για παράδειγμα:
true = true // true
false = false // true
true = false // false
true = 1 // false
Οι αριθμοί συγκρίνονται με χρήση της καθορισμένης ακρίβειας:
Εάν κάποιος από τους αριθμούς είναι
#nan
, τότε οι αριθμοί δεν είναι ίδιοι.Όταν κανένας αριθμός δεν είναι
#nan
, οι αριθμοί συγκρίνονται χρησιμοποιώντας μια σύγκριση bit-wise της αριθμητικής τιμής.#nan
Το είναι η μόνη τιμή που δεν ισούται με τον εαυτό της.Για παράδειγμα:
1 = 1, // true
1.0 = 1 // true
2 = 1 // false
#nan = #nan // false
#nan <> #nan // true
Δύο διάρκειες είναι ίσες εάν αντιπροσωπεύουν τον ίδιο αριθμό σημάτων ρολογιού 100νανοδευτεροσφάλειας.
Δύο φορές είναι ίσες εάν τα μεγέθη τους (ώρα, λεπτό, δευτερόλεπτο) είναι ίσα.
Δύο ημερομηνίες είναι ίσες εάν τα μεγέθη των τμημάτων τους (έτος, μήνας, ημέρα) είναι ίσα.
Δύο ημερομηνίες/ώρες είναι ίσες εάν τα μεγέθη τους (έτος, μήνας, ημέρα, ώρα, λεπτό, δευτερόλεπτο) είναι ίσα.
Δύο ζώνες ημερομηνίας/ώρας είναι ίσες εάν οι αντίστοιχες ημερομηνίες/ώρες UTC είναι ίσες. Για να φτάσετε στην αντίστοιχη ημερομηνία/ώρα UTC, η μετατόπιση ωρών/λεπτών αφαιρείται από το στοιχείο ημερομηνίας/ώρας της ζώνης ημερομηνίας/ώρας.
Δύο τιμές κειμένου είναι ίσες εάν χρησιμοποιώντας μια τακτική σύγκριση, με διάκριση πεζών-κεφαλαίων, χωρίς διάκριση κουλτούρας, έχουν το ίδιο μήκος και ίσους χαρακτήρες στις αντίστοιχες θέσεις.
Δύο τιμές λίστας είναι ίσες εάν ισχύουν όλα τα παρακάτω:
Και οι δύο λίστες περιέχουν τον ίδιο αριθμό στοιχείων.
Οι τιμές κάθε στοιχείου που αντιστοιχεί θέσεων στις λίστες είναι ίσες. Αυτό σημαίνει ότι όχι μόνο οι λίστες πρέπει να περιέχουν ίσα στοιχεία, αλλά τα στοιχεία πρέπει να είναι και στην ίδια σειρά.
Για παράδειγμα:
{1, 2} = {1, 2} // true {2, 1} = {1, 2} // false {1, 2, 3} = {1, 2} // false
Δύο εγγραφές είναι ίσες εάν ισχύουν όλα τα παρακάτω:
Ο αριθμός των πεδίων είναι ο ίδιος.
Κάθε όνομα πεδίου μιας εγγραφής υπάρχει επίσης στην άλλη εγγραφή.
Η τιμή κάθε πεδίου μιας εγγραφής ισούται με το πεδίο με το ίδιο όνομα στην άλλη εγγραφή.
Για παράδειγμα:
[ A = 1, B = 2 ] = [ A = 1, B = 2 ] // true [ B = 2, A = 1 ] = [ A = 1, B = 2 ] // true [ A = 1, B = 2, C = 3 ] = [ A = 1, B = 2 ] // false [ A = 1 ] = [ A = 1, B = 2 ] // false
Δύο πίνακες είναι ίσοι εάν ισχύουν όλα τα παρακάτω:
Ο αριθμός των στηλών είναι ο ίδιος.
Κάθε όνομα στήλης σε έναν πίνακα υπάρχει επίσης στον άλλο πίνακα.
Ο αριθμός των γραμμών είναι ο ίδιος.
Κάθε γραμμή έχει ίσες τιμές στα αντίστοιχα κελιά.
Για παράδειγμα:
#table({"A","B"},{{1,2}}) = #table({"A","B"},{{1,2}}) // true #table({"A","B"},{{1,2}}) = #table({"X","Y"},{{1,2}}) // false #table({"A","B"},{{1,2}}) = #table({"B","A"},{{2,1}}) // true
Μια τιμή συνάρτησης είναι ίση με τον εαυτό της, αλλά μπορεί να είναι ή όχι ίση με μια άλλη τιμή συνάρτησης. Εάν δύο τιμές συναρτήσεων θεωρούνται ίσες, τότε θα συμπεριφέρονται με τον ίδιο τρόπο όταν καλούνται.
Δύο δεδομένες τιμές συναρτήσεων θα έχουν πάντα την ίδια σχέση ισότητας.
Μια τιμή τύπου είναι ίση με τον εαυτό της, αλλά μπορεί να είναι ή όχι ίση με μια άλλη τιμή τύπου. Εάν δύο τιμές τύπου θεωρούνται ίσες, τότε θα συμπεριφέρονται πανομοιότυπα όταν ερωτώνται για συμμόρφωση.
Δύο δεδομένες τιμές τύπου θα έχουν πάντα την ίδια σχέση ισότητας.
Σχεσιακοί τελεστές
Οι <
τελεστές , >
, <=
και >=
ονομάζονται σχεσιακόι τελεστές.
σχεσιακή-παράσταση:
προσθετική-παράσταση
προσθετική-παράσταση<
σχεσιακή-παράσταση
προσθετική-παράσταση>
σχεσιακή-παράσταση
προσθετική-παράσταση<=
σχεσιακή-παράσταση
προσθετική-παράσταση>=
σχεσιακή-παράσταση
Αυτοί οι τελεστές χρησιμοποιούνται για τον προσδιορισμό της σχετικής σχέσης ταξινόμησης μεταξύ δύο τιμών, όπως φαίνεται στον παρακάτω πίνακα:
Λειτουργία | Αποτέλεσμα |
---|---|
x < y |
true εάν x το είναι μικρότερο από y το , false διαφορετικά είναι |
x > y |
true εάν x το είναι μεγαλύτερο από y το , false διαφορετικά είναι |
x <= y |
true εάν x το είναι μικρότερο από ή ίσο με το y , false διαφορετικά είναι |
x >= y |
true εάν x το είναι μεγαλύτερο ή ίσο με το y , false διαφορετικά είναι |
Για παράδειγμα:
0 <= 1 // true
null < 1 // null
null <= null // null
"ab" < "abc" // true
#nan >= #nan // false
#nan <= #nan // false
Τα παρακάτω ισχύουν κατά την αξιολόγηση μιας παράστασης που περιέχει τους σχεσιακόυς τελεστές:
Τα σφάλματα που προέκυψαν κατά την αξιολόγηση των
x
παραστάσεων τελεστέου ήy
μεταδίδονται.Οι τιμές που παράγονται από την
x
αξιολόγηση των παραστάσεων καιy
πρέπει να είναι δυαδικές, ημερομηνίας, ημερομηνίας/ώρας, ζώνης ημερομηνίας/ώρας, διάρκειας, λογικής, αριθμού, null, κειμένου ή ώρας. Διαφορετικά, προκαλείται σφάλμα με τον κωδικό"Expression.Error"
αιτιολογίας .Και οι δύο τελεστέοι πρέπει να είναι το ίδιο είδος τιμής ή
null
. Διαφορετικά, προκαλείται σφάλμα με τον κωδικό"Expression.Error"
αιτιολογίας .Εάν ένας ή και οι δύο τελεστέοι είναι
null
, το αποτέλεσμα είναι ηnull
τιμή.Δύο δυαδικά δεδομένα συγκρίνονται με byte κατά byte.
Δύο ημερομηνίες συγκρίνονται με τη σύγκριση των τμημάτων του έτους και, εάν είναι ίσα, των τμημάτων μήνα και, εάν είναι ίσα, των τμημάτων ημέρας.
Δύο ημερομηνίες/ώρες συγκρίνονται με τη σύγκριση των τμημάτων του έτους τους και, εάν είναι ίσα, των τμημάτων μήνα και, εάν είναι ίσα, των τμημάτων ημέρας και, εάν είναι ίσα, των τμημάτων ώρας τους και, εάν είναι ίσα, των τμημάτων λεπτού τους και, εάν είναι ίσα, των τμημάτων δευτερολέπτων τους.
Δύο ζώνες ημερομηνίας/ώρας συγκρίνονται με την κανονικοποίησή τους με την UTC, αφαιρώντας την απόκλιση ώρας/λεπτού και, στη συνέχεια, συγκρίνοντας τα στοιχεία ημερομηνίας/ώρας.
Δύο διάρκειες συγκρίνονται σύμφωνα με τον συνολικό αριθμό των σημάτων ρολογιού 100νανοδευτεροσφάλεια που αντιπροσωπεύουν.
Συγκρίνονται δύο λογικές μέθοδοι που
true
θεωρούνται μεγαλύτερες απόfalse
.Δύο αριθμοί
x
καιy
συγκρίνονται σύμφωνα με τους κανόνες του προτύπου IEEE 754:Εάν κάποιος τελεστέος είναι
#nan
, το αποτέλεσμα είναιfalse
για όλους τους σχεσιακόυς τελεστές.Όταν κανένας τελεστέος δεν είναι
#nan
, οι τελεστές συγκρίνουν τις τιμές των δύο τελεστέων κινητής υποδιαστολής σε σχέση με την διάταξη-∞ < -max < ... < -min < -0.0 = +0.0 < +min < ... < +max < +∞
όπου το ελάχιστο και το μέγιστο είναι οι μικρότερες και μεγαλύτερες θετικές πεπερασμένες τιμές που μπορούν να αναπαριστούν. Τα ονόματα M για τα -∞ και +∞ είναι-#infinity
και#infinity
.Τα αξιοσημείωτα αποτελέσματα αυτής της διάταξης είναι τα εξής:
Τα αρνητικά και τα θετικά μηδενικά θεωρούνται ίσα.
Μια
-#infinity
τιμή θεωρείται μικρότερη από όλες τις άλλες αριθμητικές τιμές, αλλά ισούται με μια άλλη-#infinity
.Μια
#infinity
τιμή θεωρείται μεγαλύτερη από όλες τις άλλες αριθμητικές τιμές, αλλά ισούται με μια άλλη#infinity
.
Δύο κείμενα συγκρίνονται με τη χρήση μιας σύγκρισης χαρακτήρα-κατά-χαρακτήρα, με διάκριση πεζών-κεφαλαίων, χωρίς διάκριση κουλτούρας.
Δύο φορές συγκρίνονται με τη σύγκριση των τμημάτων της ώρας και, αν είναι ίσα, των τμημάτων λεπτού τους και, εάν είναι ίσα, των δευτερολέπτων μερών τους.
Λογικοί τελεστές υπό όρους
Οι and
τελεστές και or
ονομάζονται λογικοί τελεστές υπό όρους.
λογική-παράσταση-ή:
παράσταση-λογικού-και
παράσταση-λογικού-καιor
παράσταση-λογικού-ή
λογική-παράσταση-και:
παράσταση-is
παράσταση-isand
παράσταση-λογικού-και
Ο or
τελεστής επιστρέφει true
όταν τουλάχιστον ένας από τους τελεστέους του είναι true
. Ο δεξιός τελεστέος αξιολογείται εάν και μόνο εάν ο αριστερός τελεστέος δεν true
είναι .
Ο and
τελεστής επιστρέφει false
όταν τουλάχιστον ένας από τους τελεστέους του είναι false
. Ο δεξιός τελεστέος αξιολογείται εάν και μόνο εάν ο αριστερός τελεστέος δεν false
είναι .
Οι πίνακες αληθείας για or
τους τελεστές και and
εμφανίζονται παρακάτω, με αποτέλεσμα την αξιολόγηση της παράστασης αριστερού τελεστέου στον κατακόρυφο άξονα και το αποτέλεσμα της αξιολόγησης της παράστασης δεξιού τελεστέου στον οριζόντιο άξονα.
and |
true |
false |
null |
error |
---|---|---|---|---|
true |
true |
false |
null |
error |
false |
false |
false |
false |
false |
null |
null |
false |
null |
error |
error |
error |
error |
error |
error |
or |
true |
false |
null |
error |
---|---|---|---|---|
or |
true |
false |
null |
error |
true |
true |
true |
true |
true |
false |
true |
false |
null |
error |
null |
true |
null |
null |
error |
error |
error |
error |
error |
error |
Τα παρακάτω ισχύουν κατά την αξιολόγηση μιας παράστασης που περιέχει λογικούς τελεστές υπό όρους:
Τα σφάλματα που προέκυψαν κατά την αξιολόγηση των
x
παραστάσεων ory
μεταδίδονται.Οι λογικοί τελεστές υπό όρους ορίζονται πάνω από τους τύπους
logical
καιnull
. Εάν οι τιμές των τελεστέων δεν είναι αυτών των τύπων, προκαλείται σφάλμα με τον κωδικό"Expression.Error"
αιτιολογίας .Το αποτέλεσμα είναι μια λογική τιμή.
Στην παράσταση
x
ήy
, η παράστασηy
θα αξιολογηθεί εάν και μόνο εάνx
το δεν αξιολογείται σεtrue
.Στην παράσταση
x
καιy
, η παράστασηy
θα αξιολογηθεί εάν και μόνο εάνx
το δεν αξιολογείται σεfalse
.
Οι δύο τελευταίες ιδιότητες παρέχουν στους λογικούς τελεστές υπό όρους την ιδιότητα "υπό όρους". ιδιότητες που αναφέρονται επίσης ως "βραχυκύκλωμα". Αυτές οι ιδιότητες είναι χρήσιμες για την εγγραφή μικρών προστατευμένων κατηγορημάτων. Για παράδειγμα, οι παρακάτω παραστάσεις είναι ισοδύναμες:
d <> 0 and n/d > 1 if d <> 0 then n/d > 1 else false
Αριθμητικοί τελεστές
Οι +
τελεστές , -
*
και /
είναι οι αριθμητικοί τελεστές.
προσθετική-παράσταση:
πολλαπλασιαστική-παράσταση
προσθετική-παράσταση+
πολλαπλασιαστική-παράσταση
προσθετική-παράσταση-
πολλαπλασιαστική-παράσταση
πολλαπλασιαστική-παράσταση:
παράσταση μετα-δεδομένων
πολλαπλασιαστική-παράσταση*
παράσταση-μετα-δεδομένων
πολλαπλασιαστική-παράσταση/
παράσταση-μετα-δεδομένων
Ακρίβεια
Οι αριθμοί στην M αποθηκεύονται χρησιμοποιώντας διάφορες αναπαραστάσεις για να διατηρηθούν όσο το δυνατόν περισσότερες πληροφορίες σχετικά με αριθμούς που προέρχονται από διάφορες πηγές. Οι αριθμοί μετατρέπονται μόνο από μία αναπαράσταση σε μια άλλη, όπως απαιτείται από τους τελεστές που εφαρμόζονται σε αυτές. Υποστηρίζονται δύο ακρίβειες στην M:
Ακρίβεια | Σημασιολογία |
---|---|
Precision.Decimal |
Δεκαδική αναπαράσταση 128 bit με εύρος ±1,0 x 10-28 έως ±7,9 x 1028 και 28-29 σημαντικά ψηφία. |
Precision.Double |
Επιστημονική αναπαράσταση με χρήση μαντίσας και εκθέτη Το συμμορφώνεται με το δυαδικό αριθμητικό πρότυπο διπλής ακρίβειας IEEE 754 64 bit, IEEE 754-2008. |
Οι αριθμητικές λειτουργίες εκτελούνται επιλέγοντας μια ακρίβεια, μετατρέποντας τους τελεστέους σε αυτή την ακρίβεια (εάν είναι απαραίτητο) και, στη συνέχεια, εκτελώντας την πραγματική πράξη και, τέλος, επιστρέφοντας έναν αριθμό με την επιλεγμένη ακρίβεια.
Οι ενσωματωμένοι αριθμητικοί τελεστές (+
, -
, *
, /
) χρησιμοποιούν Διπλή ακρίβεια. Οι τυπικές συναρτήσεις βιβλιοθήκης (Value.Add
, Value.Subtract
, Value.Multiply
, Value.Divide
) μπορούν να χρησιμοποιηθούν για να ζητήσουν αυτές τις λειτουργίες χρησιμοποιώντας ένα συγκεκριμένο μοντέλο ακρίβειας.
Δεν είναι δυνατή η αριθμητική υπερχείλιση:
#infinity
τα ή-#infinity
αντιπροσωπεύουν τιμές μεγέθους πολύ μεγάλες για να αναπαρασταθούν.Δεν είναι δυνατή η αριθμητική υποχείλιση:
0
τα και-0
αντιπροσωπεύουν τιμές μεγέθους πολύ μικρές για να απεικνικοποιηθούν.Η ειδική τιμή
#nan
IEEE 754 (NaN— Not a Number) χρησιμοποιείται για την κάλυψη αριθμητικά άκυρων περιπτώσεων, όπως μια διαίρεση μηδέν με μηδέν.Η μετατροπή από δεκαδική σε διπλή ακρίβεια εκτελείται με στρογγυλοποίηση δεκαδικών αριθμών στην πλησιέστερη ισοδύναμη διπλή τιμή.
Η μετατροπή από διπλή σε δεκαδική ακρίβεια εκτελείται με στρογγυλοποίηση διπλών αριθμών στην πλησιέστερη ισοδύναμη δεκαδική τιμή και, εάν είναι απαραίτητο, υπερχείλιση σε
#infinity
τιμές ή-#infinity
.
Τελεστής πρόσθεσης
Η ερμηνεία του τελεστή πρόσθεσης (x + y
) εξαρτάται από το είδος της τιμής των παραστάσεων x και y που αξιολογούνται, ως εξής:
x | y | Αποτέλεσμα | Ερμηνεία |
---|---|---|---|
type number |
type number |
type number |
Αριθμητικό άθροισμα |
type number |
null |
null |
|
null |
type number |
null |
|
type duration |
type duration |
type duration |
Αριθμητικό άθροισμα μεγεθών |
type duration |
null |
null |
|
null |
type duration |
null |
|
type
ημερομηνία/ώρα |
type duration |
type
ημερομηνία/ώρα |
Μετατόπιση ημερομηνίας/ώρας κατά διάρκεια |
type duration |
type
ημερομηνία/ώρα |
type
ημερομηνία/ώρα |
|
type
ημερομηνία/ώρα |
null |
null |
|
null |
type
ημερομηνία/ώρα |
null |
Στον πίνακα, type
η ημερομηνία/ώρα αντιπροσωπεύει οποιοδήποτε από τα type date
στοιχεία , type datetime
, type datetimezone
ή type time
. Όταν προσθέτετε μια διάρκεια και μια τιμή κάποιου τύπου ημερομηνίας/ώρας, η τιμή που προκύπτει είναι ίδιου τύπου.
Για άλλους συνδυασμούς τιμών από αυτούς που παρατίθενται στον πίνακα, προκαλείται σφάλμα με τον κωδικό "Expression.Error"
αιτιολογίας . Κάθε συνδυασμός καλύπτεται στις παρακάτω ενότητες.
Τα σφάλματα που προέκυψαν κατά την αξιολόγηση ενός από τους δύο τελεστέους μεταδίδονται.
Αριθμητικό άθροισμα
Το άθροισμα δύο αριθμών υπολογίζεται με χρήση του τελεστή πρόσθεσης, παράγοντας έναν αριθμό.
Για παράδειγμα:
1 + 1 // 2
#nan + #infinity // #nan
Ο τελεστής πρόσθεσης +
σε αριθμούς χρησιμοποιεί Διπλή ακρίβεια. Η τυπική συνάρτηση Value.Add
βιβλιοθήκης μπορεί να χρησιμοποιηθεί για τον καθορισμό της Ακρίβειας δεκαδικών. Τα παρακάτω ισχύουν κατά τον υπολογισμό ενός αθροίσματος αριθμών:
Το άθροισμα σε διπλή ακρίβεια υπολογίζεται σύμφωνα με τους κανόνες του δυαδικού αριθμητικού 64-bit διπλής ακρίβειας IEEE 754, IEEE 754-2008. Ο παρακάτω πίνακας παραθέτει τα αποτελέσματα όλων των πιθανών συνδυασμών μη μηδενικών πεπερασμένων τιμών, μηδενικών, άπειρων και NaN. Στον πίνακα,
x
τα καιy
είναι μη μηδενικές πεπερασμένες τιμές καιz
το είναι το αποτέλεσμα τουx + y
. Εάνx
τα καιy
έχουν το ίδιο μέγεθος αλλά αντίθετο πρόσημο,z
το είναι θετικό μηδέν. Εάνx + y
το είναι πολύ μεγάλο για να αντιπροσωπεύεται στον τύπο προορισμού,z
το είναι ένα άπειρο με το ίδιο πρόσημοx + y
με το .+ y +0 0- +∞ -∞ NaN x z x x +∞ -∞ NaN +0 y +0 +0 +∞ -∞ NaN -0 y +0 0- +∞ -∞ NaN +∞ +∞ +∞ +∞ +∞ NaN NaN -∞ -∞ -∞ -∞ NaN -∞ NaN NaN NaN NaN NaN NaN NaN NaN Το άθροισμα στην Δεκαδική ακρίβεια υπολογίζεται χωρίς απώλεια ακρίβειας. Η κλίμακα του αποτελέσματος είναι η μεγαλύτερη από τις κλίμακες των δύο τελεστέων.
Άθροισμα διαρκειών
Το άθροισμα των δύο διαρκειών είναι η διάρκεια που αντιπροσωπεύει το άθροισμα του αριθμού των σημάτων ρολογιού 100νανοδευτερομηνιών που αντιπροσωπεύονται από τις διάρκειες. Για παράδειγμα:
#duration(2,1,0,15.1) + #duration(0,1,30,45.3)
// #duration(2, 2, 31, 0.4)
Μετατόπιση ημερομηνίας/ώρας κατά διάρκεια
Μια x
και μια διάρκεια y
μπορούν να προστεθούν χρησιμοποιώντας x + y
το για τον υπολογισμό μιας νέας ημερομηνίας/ώρας της οποίας η απόσταση από x
το σε μια γραμμική λωρίδα χρόνου είναι ακριβώς το μέγεθος του y
. Εδώ, η ημερομηνία/ώρα αντιπροσωπεύει οποιοδήποτε από Date
τα , DateTime
, DateTimeZone
ή Time
και ένα αποτέλεσμα που δεν είναι null θα είναι του ίδιου τύπου. Η μετατόπιση ημερομηνίας/ώρας κατά διάρκεια μπορεί να υπολογιστεί ως εξής:
Εάν έχουν καθοριστεί οι ημέρες της ημερομηνίας/ώρας από τότε που έχει καθοριστεί η τιμή χρονικής σήμανσης, δημιουργήστε μια νέα ημερομηνία/ώρα με τα ακόλουθα στοιχεία πληροφοριών:
Υπολογίστε νέες ημέρες μετά από χρονική σήμανση που ισοδυναμεί με διαίρεση του μεγέθους y με τον αριθμό των σημάτων ρολογιού 100νανοδευτεροτόνου σε περίοδο 24 ωρών, περικόπτοντας το δεκαδικό τμήμα του αποτελέσματος και προσθέτοντας αυτή την τιμή στις ημέρες του x μετά από κάθε χρονική σήμανση.
Υπολογίστε νέα σήματα ρολογιού από τα μεσάνυχτα που ισοδυναμούν με την προσθήκη του μεγέθους y στα σήματα ρολογιού του x από τα μεσάνυχτα, αρθρωτά ο αριθμός των σημάτων ρολογιού 100 νανοδευτεροτόνων σε περίοδο 24 ωρών. Εάν το x δεν καθορίζει μια τιμή για τα σήματα ρολογιού από τα μεσάνυχτα, λαμβάνεται μια τιμή 0.
Αντιγράψτε την τιμή του x για τα λεπτά μετατόπισης από το UTC αμετάβλητη.
Εάν δεν έχουν καθοριστεί οι ημέρες της ημερομηνίας/ώρας από τότε που έχει οριστεί η τιμή χρονικής σήμανσης, δημιουργήστε μια νέα ημερομηνία/ώρα με καθορισμένα τα ακόλουθα στοιχεία πληροφοριών:
Υπολογίστε νέα σήματα ρολογιού από τα μεσάνυχτα που ισοδυναμούν με την προσθήκη του μεγέθους y στα σήματα ρολογιού του x από τα μεσάνυχτα, αρθρωτά ο αριθμός των σημάτων ρολογιού 100 νανοδευτεροτόνων σε περίοδο 24 ωρών. Εάν το x δεν καθορίζει μια τιμή για τα σήματα ρολογιού από τα μεσάνυχτα, λαμβάνεται μια τιμή 0.
Αντιγράψτε τις τιμές του x για τις ημέρες μετά την χρονική σήμανση και την μετατόπιση σε λεπτά από την UTC αμετάβλητη.
Τα παρακάτω παραδείγματα δείχνουν τον υπολογισμό του απόλυτου χρονικού αθροίσματος όταν η ημερομηνία/ώρα καθορίζει τις ημέρες από την χρονική σήμανση:
#date(2010,05,20) + #duration(0,8,0,0)
//#datetime( 2010, 5, 20, 8, 0, 0 )
//2010-05-20T08:00:00
#date(2010,01,31) + #duration(30,08,0,0)
//#datetime(2010, 3, 2, 8, 0, 0)
//2010-03-02T08:00:00
#datetime(2010,05,20,12,00,00,-08) + #duration(0,04,30,00)
//#datetime(2010, 5, 20, 16, 30, 0, -8, 0)
//2010-05-20T16:30:00-08:00
#datetime(2010,10,10,0,0,0,0) + #duration(1,0,0,0)
//#datetime(2010, 10, 11, 0, 0, 0, 0, 0)
//2010-10-11T00:00:00+00:00
Το παρακάτω παράδειγμα δείχνει τον υπολογισμό της μετατόπισης ημερομηνίας/ώρας κατά διάρκεια για μια δεδομένη ώρα:
#time(8,0,0) + #duration(30,5,0,0)
//#time(13, 0, 0)
//13:00:00
Τελεστής αφαίρεσης
Η ερμηνεία του τελεστή αφαίρεσης (x - y
) εξαρτάται από το είδος της τιμής των παραστάσεων x
και που αξιολογούνται, y
ως εξής:
x | Y | Αποτέλεσμα | Ερμηνεία |
---|---|---|---|
type number |
type number |
type number |
Αριθμητική διαφορά |
type number |
null |
null |
|
null |
type number |
null |
|
type duration |
type duration |
type duration |
Αριθμητική διαφορά μεγεθών |
type duration |
null |
null |
|
null |
type duration |
null |
|
type
ημερομηνία/ώρα |
type
ημερομηνία/ώρα |
type duration |
Διάρκεια μεταξύ ημερομηνίες/ώρες |
type
ημερομηνία/ώρα |
type duration |
type
ημερομηνία/ώρα |
Μετατόπιση ημερομηνίας/ώρας κατά αρνητική διάρκεια |
type
ημερομηνία/ώρα |
null |
null |
|
null |
type
ημερομηνία/ώρα |
null |
Στον πίνακα, type
η ημερομηνία/ώρα αντιπροσωπεύει οποιοδήποτε από τα type date
στοιχεία , type datetime
, type datetimezone
ή type time
. Κατά την αφαίρεση μιας διάρκειας από μια τιμή κάποιου τύπου ημερομηνίας/ώρας, η τιμή που προκύπτει είναι ίδιου τύπου.
Για άλλους συνδυασμούς τιμών από αυτούς που παρατίθενται στον πίνακα, προκαλείται σφάλμα με τον κωδικό "Expression.Error"
αιτιολογίας . Κάθε συνδυασμός καλύπτεται στις παρακάτω ενότητες.
Τα σφάλματα που προέκυψαν κατά την αξιολόγηση ενός από τους δύο τελεστέους μεταδίδονται.
Αριθμητική διαφορά
Η διαφορά μεταξύ δύο αριθμών υπολογίζεται με χρήση του τελεστή αφαίρεσης, παράγοντας έναν αριθμό. Για παράδειγμα:
1 - 1 // 0
#nan - #infinity // #nan
Ο τελεστής αφαίρεσης -
σε αριθμούς χρησιμοποιεί Διπλή ακρίβεια. Η τυπική συνάρτηση Value.Subtract
βιβλιοθήκης μπορεί να χρησιμοποιηθεί για τον καθορισμό της Ακρίβειας δεκαδικών. Τα παρακάτω ισχύουν κατά τον υπολογισμό μιας διαφοράς αριθμών:
Η διαφορά σε διπλή ακρίβεια υπολογίζεται σύμφωνα με τους κανόνες του δυαδικού αριθμητικού 64-bit διπλής ακρίβειας IEEE 754, IEEE 754-2008. Ο παρακάτω πίνακας παραθέτει τα αποτελέσματα όλων των πιθανών συνδυασμών μη μηδενικών πεπερασμένων τιμών, μηδενικών, άπειρων και NaN. Στον πίνακα,
x
τα καιy
είναι μη μηδενικές πεπερασμένες τιμές καιz
το είναι το αποτέλεσμα τουx - y
. Εάνx
τα καιy
είναι ίσα,z
το είναι θετικό μηδέν. Εάνx - y
το είναι πολύ μεγάλο για να αντιπροσωπεύεται στον τύπο προορισμού,z
το είναι ένα άπειρο με το ίδιο πρόσημοx - y
με το .- y +0 0- +∞ -∞ NaN x z x x -∞ +∞ NaN +0 -y +0 +0 -∞ +∞ NaN -0 -y 0- +0 -∞ +∞ NaN +∞ +∞ +∞ +∞ NaN +∞ NaN -∞ -∞ -∞ -∞ -∞ NaN NaN NaN NaN NaN NaN NaN NaN NaN Η διαφορά στην Δεκαδική ακρίβεια υπολογίζεται χωρίς απώλεια ακρίβειας. Η κλίμακα του αποτελέσματος είναι η μεγαλύτερη από τις κλίμακες των δύο τελεστέων.
Διαφορά διαρκειών
Η διαφορά των δύο διαρκειών είναι η διάρκεια που αντιπροσωπεύει τη διαφορά μεταξύ του αριθμού των σημάτων ρολογιού 100νανοδευτερολεπτών που αντιπροσωπεύονται από κάθε διάρκεια. Για παράδειγμα:
#duration(1,2,30,0) - #duration(0,0,0,30.45)
// #duration(1, 2, 29, 29.55)
Μετατόπιση ημερομηνίας/ώρας κατά αρνητική διάρκεια
Μια ημερομηνία/ώραx
και μια διάρκεια y
μπορούν να αφαιρεθούν χρησιμοποιώντας το x - y
για τον υπολογισμό μιας νέας ημερομηνίας/ώρας. Εδώ, η ημερομηνία/ώρα αντιπροσωπεύει οποιοδήποτε από date
τα στοιχεία , datetime
datetimezone
ή time
. Η ημερομηνία/ώρα που προκύπτει y
Η αφαίρεση θετικών διαρκειών αποδίδει αποτελέσματα που είναι προς τα πίσω στο χρόνο σε σχέση με x
το , ενώ η αφαίρεση αρνητικών τιμών αποδίδει αποτελέσματα που είναι προς τα εμπρός στον χρόνο.
#date(2010,05,20) - #duration(00,08,00,00)
//#datetime(2010, 5, 19, 16, 0, 0)
//2010-05-19T16:00:00
#date(2010,01,31) - #duration( 30,08,00,00)
//#datetime(2009, 12, 31, 16, 0, 0)
//2009-12-31T16:00:00
Διάρκεια μεταξύ δύο τιμών ημερομηνίας/ώρας
Δύο ημερομηνίες/ώρεςt
και u
μπορούν να αφαιρεθούν χρησιμοποιώντας t - u
το για τον υπολογισμό της διάρκειας μεταξύ τους. Εδώ, η ημερομηνία/ώρα αντιπροσωπεύει οποιοδήποτε από date
τα στοιχεία , datetime
datetimezone
ή time
. Η διάρκεια που παράγεται από την αφαίρεση u
από t
το πρέπει να αποδίδει την τιμή t
όταν προστίθεται στο u
.
#date(2010,01,31) - #date(2010,01,15)
// #duration(16,00,00,00)
// 16.00:00:00
#date(2010,01,15)- #date(2010,01,31)
// #duration(-16,00,00,00)
// -16.00:00:00
#datetime(2010,05,20,16,06,00,-08,00) -
#datetime(2008,12,15,04,19,19,03,00)
// #duration(521,22,46,41)
// 521.22:46:41
Η αφαίρεση t - u
όταν u > t
έχει ως αποτέλεσμα αρνητική διάρκεια:
#time(01,30,00) - #time(08,00,00)
// #duration(0, -6, -30, 0)
Τα παρακάτω ισχύουν κατά την αφαίρεση δύο τιμών ημερομηνίας/ώρας με χρήση t - u
του :
- u + (t - u) = t
Τελεστής πολλαπλασιασμού
Η ερμηνεία του τελεστή πολλαπλασιασμού (x * y
) εξαρτάται από το είδος της τιμής των παραστάσεων x και y που αξιολογούνται, ως εξής:
X | Y | Αποτέλεσμα | Ερμηνεία |
---|---|---|---|
type number |
type number |
type number |
Αριθμητικό προϊόν |
type number |
null |
null |
|
null |
type number |
null |
|
type duration |
type number |
type duration |
Πολλαπλάσιο της διάρκειας |
type number |
type duration |
type duration |
Πολλαπλάσιο της διάρκειας |
type duration |
null |
null |
|
null |
type duration |
null |
Για άλλους συνδυασμούς τιμών από αυτούς που παρατίθενται στον πίνακα, προκαλείται σφάλμα με τον κωδικό "Expression.Error"
αιτιολογίας . Κάθε συνδυασμός καλύπτεται στις παρακάτω ενότητες.
Τα σφάλματα που προέκυψαν κατά την αξιολόγηση ενός από τους δύο τελεστέους μεταδίδονται.
Αριθμητικό προϊόν
Το γινόμενο δύο αριθμών υπολογίζεται με χρήση του τελεστή πολλαπλασιασμού, παράγοντας έναν αριθμό. Για παράδειγμα:
2 * 4 // 8
6 * null // null
#nan * #infinity // #nan
Ο τελεστής *
πολλαπλασιασμού σε αριθμούς χρησιμοποιεί Διπλή ακρίβεια. Η τυπική συνάρτηση Value.Multiply
βιβλιοθήκης μπορεί να χρησιμοποιηθεί για τον καθορισμό της Ακρίβειας δεκαδικών. Τα παρακάτω ισχύουν κατά τον υπολογισμό ενός προϊόντος αριθμών:
Το προϊόν σε διπλή ακρίβεια υπολογίζεται σύμφωνα με τους κανόνες του δυαδικού αριθμητικού 64-bit διπλής ακρίβειας IEEE 754, IEEE 754-2008. Ο παρακάτω πίνακας παραθέτει τα αποτελέσματα όλων των πιθανών συνδυασμών μη μηδενικών πεπερασμένων τιμών, μηδενικών, άπειρων και NaN. Στον πίνακα,
x
τα καιy
είναι θετικές πεπερασμένες τιμές.z
Το είναι το αποτέλεσμα τουx * y
. Εάν το αποτέλεσμα είναι πολύ μεγάλο για τον τύπο προορισμού,z
το είναι άπειρο. Εάν το αποτέλεσμα είναι πολύ μικρό για τον τύπο προορισμού,z
το είναι μηδέν.* +y -y +0 0- +∞ -∞ NaN +x +z -z +0 0- +∞ -∞ NaN -x -z +z 0- +0 -∞ +∞ NaN +0 +0 0- +0 0- NaN NaN NaN -0 0- +0 0- +0 NaN NaN NaN +∞ +∞ -∞ NaN NaN +∞ -∞ NaN -∞ -∞ +∞ NaN NaN -∞ +∞ NaN NaN NaN NaN NaN NaN NaN NaN NaN Το προϊόν στην Δεκαδική ακρίβεια υπολογίζεται χωρίς απώλεια ακρίβειας. Η κλίμακα του αποτελέσματος είναι η μεγαλύτερη από τις κλίμακες των δύο τελεστέων.
Πολλαπλάσια διαρκειών
Το γινόμενο μιας διάρκειας και ενός αριθμού είναι η διάρκεια που αντιπροσωπεύει τον αριθμό των σημάτων ρολογιού 100νανοδευτερομηνιών που αντιπροσωπεύονται από τον τελεστέο διάρκειας επί τον τελεστέο αριθμού. Για παράδειγμα:
#duration(2,1,0,15.1) * 2
// #duration(4, 2, 0, 30.2)
Τελεστής διαίρεσης
Η ερμηνεία του τελεστή διαίρεσης (x / y
) εξαρτάται από το είδος της τιμής των παραστάσεων x
και που αξιολογούνται, y
ως εξής:
X | Y | Αποτέλεσμα | Ερμηνεία |
---|---|---|---|
type number |
type number |
type number |
Αριθμητικό πηλίκο |
type number |
null |
null |
|
null |
type number |
null |
|
type duration |
type number |
type duration |
Κλάσμα της διάρκειας |
type duration |
type duration |
type number |
Αριθμητικό πηλίκο διαρκειών |
type duration |
null |
null |
|
null |
type duration |
null |
Για άλλους συνδυασμούς τιμών από αυτούς που παρατίθενται στον πίνακα, προκαλείται σφάλμα με τον κωδικό "Expression.Error"
αιτιολογίας . Κάθε συνδυασμός καλύπτεται στις παρακάτω ενότητες.
Τα σφάλματα που προέκυψαν κατά την αξιολόγηση ενός από τους δύο τελεστέους μεταδίδονται.
Αριθμητικό πηλίκο
Το πηλίκο δύο αριθμών υπολογίζεται με χρήση του τελεστή διαίρεσης, παράγοντας έναν αριθμό. Για παράδειγμα:
8 / 2 // 4
8 / 0 // #infinity
0 / 0 // #nan
0 / null // null
#nan / #infinity // #nan
Ο τελεστής διαίρεσης /
σε αριθμούς χρησιμοποιεί Διπλή ακρίβεια. Η τυπική συνάρτηση Value.Divide
βιβλιοθήκης μπορεί να χρησιμοποιηθεί για τον καθορισμό της Ακρίβειας δεκαδικών. Τα παρακάτω ισχύουν κατά τον υπολογισμό ενός πηλίκου αριθμών:
Το πηλίκο σε διπλή ακρίβεια υπολογίζεται σύμφωνα με τους κανόνες του δυαδικού αριθμητικού 64-bit διπλής ακρίβειας IEEE 754, IEEE 754-2008. Ο παρακάτω πίνακας παραθέτει τα αποτελέσματα όλων των πιθανών συνδυασμών μη μηδενικών πεπερασμένων τιμών, μηδενικών, άπειρων και NaN. Στον πίνακα,
x
τα καιy
είναι θετικές πεπερασμένες τιμές.z
Το είναι το αποτέλεσμα τουx / y
. Εάν το αποτέλεσμα είναι πολύ μεγάλο για τον τύπο προορισμού,z
το είναι άπειρο. Εάν το αποτέλεσμα είναι πολύ μικρό για τον τύπο προορισμού,z
το είναι μηδέν./ +y -y +0 0- +∞ -∞ NaN +x +z -z +∞ -∞ +0 0- NaN -x -z +z -∞ +∞ 0- +0 NaN +0 +0 0- NaN NaN +0 0- NaN -0 0- +0 NaN NaN 0- +0 NaN +∞ +∞ -∞ +∞ -∞ NaN NaN NaN -∞ -∞ +∞ -∞ +∞ NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN Το άθροισμα στην Δεκαδική ακρίβεια υπολογίζεται χωρίς απώλεια ακρίβειας. Η κλίμακα του αποτελέσματος είναι η μεγαλύτερη από τις κλίμακες των δύο τελεστέων.
Πηλίκο διαρκειών
Το πηλίκο των δύο διαρκειών είναι ο αριθμός που αντιπροσωπεύει το πηλίκο του αριθμού των σημάτων ρολογιού 100νανοδευτερομηνιών που αντιπροσωπεύονται από τις διάρκειες. Για παράδειγμα:
#duration(2,0,0,0) / #duration(0,1,30,0)
// 32
Διάρκειες με κλιμάκωση
Το πηλίκο μιας διάρκειας x
και ενός αριθμού y
είναι η διάρκεια που αντιπροσωπεύει το πηλίκο του αριθμού των σημάτων ρολογιού 100νανοδευτεροτόνου που αντιπροσωπεύονται από τη διάρκεια x
και τον αριθμό y
. Για παράδειγμα:
#duration(2,0,0,0) / 32
// #duration(0,1,30,0)
Συνδυασμός δομής
Ο τελεστής συνδυασμού (x & y
) ορίζεται πάνω από τους ακόλουθους τύπους τιμών:
X | Y | Αποτέλεσμα | Ερμηνεία |
---|---|---|---|
type text |
type text |
type text |
Αλληλουχία |
type text |
null |
null |
|
null |
type text |
null |
|
type date |
type time |
type datetime |
Συγχώνευση |
type date |
null |
null |
|
null |
type time |
null |
|
type list |
type list |
type list |
Αλληλουχία |
type record |
type record |
type record |
Συγχώνευση |
type table |
type table |
type table |
Αλληλουχία |
Αλληλουχία
Δύο τιμές κειμένου, λίστας ή πίνακα μπορούν να συνενωθούν με τη χρήση x & y
του .
Το παρακάτω παράδειγμα απεικονίζει διαδοχικές τιμές κειμένου:
"AB" & "CDE" // "ABCDE"
Το παρακάτω παράδειγμα απεικονίζει διαδοχικές λίστες:
{1, 2} & {3} // {1, 2, 3}
Τα παρακάτω ισχύουν κατά τη συνένωση δύο τιμών με χρήση x & y
του :
Τα σφάλματα που προέκυψαν κατά την αξιολόγηση των
x
παραστάσεων ory
μεταδίδονται.Δεν μεταδίδεται σφάλμα εάν ένα από τα στοιχεία ή
x
y
περιέχει ένα σφάλμα.Το αποτέλεσμα της συνένωσης δύο τιμών κειμένου είναι μια τιμή κειμένου που περιέχει την τιμή του x που ακολουθείται αμέσως από το y. Εάν κάποιος από τους τελεστέους είναι null και ο άλλος είναι μια τιμή κειμένου, το αποτέλεσμα είναι null.
Το αποτέλεσμα της συνένωσης δύο λιστών είναι μια λίστα που περιέχει όλα τα στοιχεία του
x
που ακολουθούνται από όλα τα στοιχεία τουy
.Το αποτέλεσμα της συνένωσης δύο πινάκων είναι ένας πίνακας που έχει την ένωση των στηλών δύο στηλών του πίνακα τελεστέων. Η σειρά στηλών του
x
διατηρείται, ακολουθούμενη από τις στήλες που εμφανίζονται μόνο στοy
, διατηρώντας τη σχετική σειρά διάταξης. Για στήλες που εμφανίζονται μόνο σε έναν από τους τελεστέους,null
το χρησιμοποιείται για να συμπληρώσει τις τιμές κελιών για τον άλλο τελεστέο.
Συγχώνευση
Συγχώνευση εγγραφών
Δύο εγγραφές μπορούν να συγχωνευτούν με χρήση x & y
του , παράγοντας μια εγγραφή που περιλαμβάνει πεδία τόσο από το όσο x
και y
από το .
Τα παρακάτω παραδείγματα απεικονίζουν τη συγχώνευση εγγραφών:
[ x = 1 ] & [ y = 2 ] // [ x = 1, y = 2 ]
[ x = 1, y = 2 ] & [ x = 3, z = 4 ] // [ x = 3, y = 2, z = 4 ]
Τα παρακάτω ισχύουν κατά τη συγχώνευση δύο εγγραφών με χρήση x + y
του :
Τα σφάλματα που προέκυψαν κατά την αξιολόγηση των
x
παραστάσεων ory
μεταδίδονται.Εάν εμφανίζεται ένα πεδίο τόσο στο όσο
x
καιy
στο , χρησιμοποιείται η τιμή απόy
το .Η σειρά των πεδίων στην εγγραφή που προκύπτει είναι αυτή του
x
, ακολουθούμενη από πεδία στοy
που δεν αποτελούν μέρος τουx
, με την ίδια σειρά που εμφανίζονται στοy
.Η συγχώνευση εγγραφών δεν προκαλεί αξιολόγηση των τιμών.
Δεν προκαλείται σφάλμα, επειδή ένα πεδίο περιέχει ένα σφάλμα.
Το αποτέλεσμα είναι μια εγγραφή.
Συγχώνευση ημερομηνίας-ώρας
Μια ημερομηνία x
μπορεί να συγχωνευθεί με μια ώρα y
με χρήση x & y
του , παράγοντας μια ημερομηνία/ώρα που συνδυάζει τα τμήματα τόσο από το όσο x
και y
από το .
Το παρακάτω παράδειγμα απεικονίζει τη συγχώνευση μιας ημερομηνίας και μιας ώρας:
#date(2013,02,26) & #time(09,17,00)
// #datetime(2013,02,26,09,17,00)
Τα παρακάτω ισχύουν κατά τη συγχώνευση δύο εγγραφών με χρήση x + y
του :
Τα σφάλματα που προέκυψαν κατά την αξιολόγηση των
x
παραστάσεων ory
μεταδίδονται.Το αποτέλεσμα είναι μια ημερομηνία/ώρα.
Μονομελείς τελεστές
Οι +
τελεστές , -
και not
είναι μοναδιαίοι τελεστές.
μοναδιαία-παράσταση:
παράσταση-τύπου
+
μοναδιαία παράσταση
-
μοναδιαία παράσταση
not
μοναδιαία παράσταση
Μοναδιαίος τελεστής συν
Ο μοναδιαίος τελεστής συν (+x
) ορίζεται για τους ακόλουθους τύπους τιμών:
X | Αποτέλεσμα | Ερμηνεία |
---|---|---|
type number |
type number |
Μοναδιαίο συν |
type duration |
type duration |
Μοναδιαίο συν |
null |
'null |
Για άλλες τιμές, προκαλείται σφάλμα με τον κωδικό "Expression.Error"
αιτιολογίας .
Ο μοναδιαίος τελεστής συν επιτρέπει την εφαρμογή ενός +
πρόσημο σε έναν αριθμό, ημερομηνία/ώρα ή τιμή null. Το αποτέλεσμα είναι η ίδια τιμή. Για παράδειγμα:
+ - 1 // -1
+ + 1 // 1
+ #nan // #nan
+ #duration(0,1,30,0) // #duration(0,1,30,0)
Τα παρακάτω ισχύουν κατά την αξιολόγηση του μοναδιαίου τελεστή +x
συν :
Τα σφάλματα που προέκυψαν κατά την
x
αξιολόγηση μεταδίδονται.Εάν το αποτέλεσμα της αξιολόγησης
x
δεν είναι μια αριθμητική τιμή, τότε προκαλείται σφάλμα με τον κωδικό"Expression.Error"
αιτιολογίας .
Μοναδιαίος τελεστής μείον
Ο μοναδιαίος τελεστής μείον (-x
) ορίζεται για τους ακόλουθους τύπους τιμών:
X | Αποτέλεσμα | Ερμηνεία |
---|---|---|
type number |
type number |
Άρνηση |
type duration |
type duration |
Άρνηση |
null |
null |
Για άλλες τιμές, προκαλείται σφάλμα με τον κωδικό "Expression.Error"
αιτιολογίας .
Ο μοναδιαίος τελεστής μείον χρησιμοποιείται για την αλλαγή του πρόσημο ενός αριθμού ή διάρκειας. Για παράδειγμα:
- (1 + 1) // -2
- - 1 // 1
- - - 1 // -1
- #nan // #nan
- #infinity // -#infinity
- #duration(1,0,0,0) // #duration(-1,0,0,0)
- #duration(0,1,30,0) // #duration(0,-1,-30,0)
Τα παρακάτω ισχύουν κατά την αξιολόγηση του μοναδιαίου τελεστή -x
μείον :
Τα σφάλματα που προέκυψαν κατά την
x
αξιολόγηση μεταδίδονται.Εάν η παράσταση είναι αριθμός, τότε το αποτέλεσμα είναι η αριθμητική τιμή από την παράσταση
x
με το πρόσημο αλλαγμένο. Εάν η τιμή είναι NaN, τότε το αποτέλεσμα είναι επίσης NaN.
Τελεστής λογικής άρνησης
Ο τελεστής λογικής άρνησης (not
) ορίζεται για τους ακόλουθους τύπους τιμών:
X | Αποτέλεσμα | Ερμηνεία |
---|---|---|
type logical |
type logical |
Άρνηση |
null |
null |
Αυτός ο τελεστής υπολογίζει τη λογική not
λειτουργία σε μια δεδομένη λογική τιμή. Για παράδειγμα:
not true // false
not false // true
not (true and true) // false
Τα παρακάτω ισχύουν κατά την αξιολόγηση του τελεστή λογικής άρνησης not x
:
Τα σφάλματα που προέκυψαν κατά την
x
αξιολόγηση μεταδίδονται.Η τιμή που παράγεται από την αξιολόγηση της παράστασης x πρέπει να είναι μια λογική τιμή, διαφορετικά, πρέπει να παρουσιαστεί σφάλμα με τον κωδικό
"Expression.Error"
αιτιολογίας . Εάν η τιμή είναιtrue
, το αποτέλεσμα είναιfalse
. Εάν ο τελεστέος είναιfalse
, το αποτέλεσμα είναιtrue
.
Το αποτέλεσμα είναι μια λογική τιμή.
Τελεστές τύπου
Οι τελεστές is
και as
ονομάζονται τελεστές τύπου.
Τελεστής συμβατότητας τύπου
Ο τελεστής συμβατότητας x is y
τύπου ορίζεται για τους ακόλουθους τύπους τιμών:
X | Y | Αποτέλεσμα |
---|---|---|
type any |
στοιχειώδης-τύπος που επιδέχεται τιμές null | type logical |
Η παράσταση x is y
επιστρέφει true
εάν ο τύπος x
που αποδίδεται είναι συμβατός με y
το και επιστρέφει false
εάν ο τύπος που x
αποδίδεται δεν είναι συμβατός με y
το .
y
Το πρέπει να είναι στοιχειώδης-τύπος-που-επιδέχεται-τιμή-null.
παράσταση-is:
παράσταση as
παράσταση-is στοιχειώδης-τύπος-που-επιδέχεται-τιμή-nullis
στοιχειώδης-τύπος-που-επιδέχεται-τιμές-null:
nullable
προαγράψτε στοιχειώδη-τύπο
Η συμβατότητα τύπου, όπως υποστηρίζεται από τον is
τελεστή, είναι ένα υποσύνολο της συμβατότητας γενικού τύπου και ορίζεται με τους ακόλουθους κανόνες:
Εάν
x
το είναι null, τότε είναι συμβατό εάνy
είναι ο τύποςany
, ο τύποςnull
ή ένας τύπος που επιδέχεται τιμές null.Εάν
x
το δεν είναι null, τότε είναι συμβατό εάν ο στοιχειώδης τύπος είναιx
ίδιος μεy
το .
Κατά την αξιολόγηση της παράστασης x is y
:
- Ένα σφάλμα που προκύπτει κατά την αξιολόγηση της παράστασης
x
μεταδίδεται.
Τελεστής δήλωσης τύπου
Ο τελεστής δήλωσης x as y
τύπου ορίζεται για τους ακόλουθους τύπους τιμών:
X | Y | Αποτέλεσμα |
---|---|---|
type any |
στοιχειώδης-τύπος που επιδέχεται τιμές null | type any |
Η παράσταση x as y
ισχυρίζεται ότι η τιμή x
είναι συμβατή με το σύμφωνα με y
τον is
τελεστή. Εάν δεν είναι συμβατή, προκαλείται σφάλμα.
y
Το πρέπει να είναι στοιχειώδης-τύπος-που-επιδέχεται-τιμή-null.
παράσταση-as:
παράσταση ισότητας
παράσταση-as στοιχειώδης-τύπος-που-επιδέχεται-τιμή-nullas
Η παράσταση x as y
αξιολογείται ως εξής:
Εκτελείται ένας έλεγχος
x is y
συμβατότητας τύπου και η διεκδίκηση επιστρέφειx
το αμετάβλητο εάν αυτή η δοκιμή ολοκληρωθεί με επιτυχία.Εάν αποτύχει ο έλεγχος συμβατότητας, προκαλείται σφάλμα με τον κωδικό
"Expression.Error"
αιτιολογίας .
Παραδείγματα:
1 as number // 1
"A" as number // error
null as nullable number // null
Κατά την αξιολόγηση της παράστασης x as y
:
- Ένα σφάλμα που προκύπτει κατά την αξιολόγηση της παράστασης
x
μεταδίδεται.
Τελεστής Coalesce
Ο τελεστής ??
coalesce επιστρέφει το αποτέλεσμα του αριστερού τελεστέου του εάν δεν είναι null, διαφορετικά θα επιστρέψει το αποτέλεσμα του δεξιού τελεστέου του. Ο δεξιός τελεστέος αξιολογείται εάν και μόνο εάν ο αριστερός τελεστέος είναι null.