Ας υποθέσουμε ότι θέλεις όλους τους μη αρνητικούς ακέραιους μέχρι το 1000. Θα ήταν γελοίο αν έπρεπε να τους πληκτρολογήσεις σε έναν πίνακα.
Για αυτό έχουμε τον τύπο range:
julia> 0:1000
0:1000
julia> typeof(0:1000)
UnitRange{Int64}
Τα εύρη είναι πολύ συνηθισμένα: όχι μόνο για να σου γλιτώσουν πληκτρολόγηση, αλλά και ως τύποι επιστροφής από συναρτήσεις.
Σημείωσε ότι τα εύρη δεν είναι διανύσματα. Είναι απλώς ένα σύνολο από οδηγίες για τη δημιουργία μιας ακολουθίας ("οκνηρή" αξιολόγηση, ή ένας "επαναλήπτης").
Αν χρειάζεσαι ένα εύρος ως διάνυσμα, χρησιμοποίησε τη συνάρτηση collect() για μετατροπή:
julia> collect(0:5)
6-element Vector{Int64}:
0
1
2
3
4
5
Το βήμα μπορεί να οριστεί, στην περίπτωση αυτή 0.3:
julia> collect(1.0:0.3:2.0)
4-element Vector{Float64}:
1.0
1.3
1.6
1.9
Άρα η σύνταξη είναι start:stepsize:stop.
Και τα δύο ακραία όρια περιλαμβάνονται, όπως φαίνεται στο παράδειγμα με τους ακέραιους.
Αν το βήμα δεν διαιρεί ακριβώς το stop - start, το τελευταίο στοιχείο θα αποφύγει να ξεπεράσει το stop.
Μη αριθμητικές ακολουθίες μπορούν επίσης να χρησιμοποιηθούν σε εύρη. Το πιο απλό παράδειγμα είναι τα γράμματα ASCII:
julia> 'a':'d'
'a':1:'d'
julia> typeof('a':'d')
StepRange{Char, Int64}
julia> collect('a':'d')
4-element Vector{Char}:
'a': ASCII/Unicode U+0061 (category Ll: Letter, lowercase)
'b': ASCII/Unicode U+0062 (category Ll: Letter, lowercase)
'c': ASCII/Unicode U+0063 (category Ll: Letter, lowercase)
'd': ASCII/Unicode U+0064 (category Ll: Letter, lowercase)
Ο τύπος Char θα καλυφθεί με περισσότερες λεπτομέρειες σε άλλη έννοια.
Για την ώρα, αντιμετώπισέ τα απλώς ως μεμονωμένους χαρακτήρες σε μονά εισαγωγικά.
Έλεγξε τα όρια ενός εύρους με τις first() και last().
r = 1:10 # => 1:10
first(r) # => 1
last(r) # => 10
Εύρη ακεραίων και διανύσματα μπορούν να χρησιμοποιηθούν στην ευρετηρίαση διανυσμάτων:
nums = collect(10.0:50.0)
nums[3:2:7] # gives [12.0, 14.0, 16.0]
nums[ [3, 5, 7] ] # also gives [12.0, 14.0, 16.0]
Ως λάτρης του σκακιού, θα ήθελες να γράψεις τη δική σου εκδοχή του παιχνιδιού. Ναι, μπορεί να υπάρχουν ήδη πολλές υλοποιήσεις σκακιού διαθέσιμες στο διαδίκτυο, αλλά η δική σου θα είναι μοναδική!
Αλλά πριν αφήσεις τη φαντασία σου ελεύθερη, πρέπει να φροντίσεις τα βασικά. Ας ξεκινήσουμε δημιουργώντας τη σκακιέρα.
Κάθε τετράγωνο της σκακιέρας προσδιορίζεται από ένα ζεύγος γράμματος-αριθμού. Οι κάθετες στήλες των τετραγώνων, που ονομάζονται στήλες, επισημαίνονται από το A έως το H. Οι οριζόντιες σειρές των τετραγώνων, που ονομάζονται γραμμές, αριθμούνται από το 1 έως το 8.
Υλοποίησε τη συνάρτηση rank_range(). Θα πρέπει να επιστρέφει ένα εύρος ακεραίων, από το 1 έως το 8.
julia> rank_range()
# output omitted
Υλοποίησε τη συνάρτηση file_range().
Θα πρέπει να επιστρέφει ένα εύρος χαρακτήρων, από το κεφαλαίο γράμμα A έως το κεφαλαίο γράμμα H.
julia> file_range()
# output omitted
Υλοποίησε τη συνάρτηση ranks(). Θα πρέπει να επιστρέφει ένα διάνυσμα ακεραίων, από το 1 έως το 8.
Μη γράψεις το διάνυσμα με το χέρι, δημιούργησέ το από το εύρος που επιστρέφει η συνάρτηση rank_range().
julia> ranks()
[1, 2, 3, 4, 5, 6, 7, 8]
Υλοποίησε τη συνάρτηση files. Θα πρέπει να επιστρέφει ένα διάνυσμα χαρακτήρων, από το 'A' έως το 'H'.
Μη γράψεις το διάνυσμα με το χέρι, δημιούργησέ το από το εύρος που επιστρέφει η συνάρτηση file_range().
julia> files()
['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Julia με 35 έννοιες128 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.