This commit is contained in:
billpcs 2015-08-05 17:06:31 +03:00
parent f27ed65af6
commit cb065fdf37
2 changed files with 13 additions and 15 deletions

View File

@ -208,7 +208,7 @@ my-pet ; => #<dog>
(set-member? (set 1 2 3) 1) ; => #t (set-member? (set 1 2 3) 1) ; => #t
(set-member? (set 1 2 3) 4) ; => #f (set-member? (set 1 2 3) 4) ; => #f
;;; Πίνακες κατακερματισμού ;;; Πίνακες κατακερματισμού (Hashes)
;; Δημιουργήστε ένα αμετάβλητο πίνακα κατακερματισμού ;; Δημιουργήστε ένα αμετάβλητο πίνακα κατακερματισμού
(define m (hash 'a 1 'b 2 'c 3)) (define m (hash 'a 1 'b 2 'c 3))
@ -355,7 +355,6 @@ m ; => '#hash((b . 2) (a . 1) (c . 3)) <-- δεν υπάρχει `d'
(eqv? (string-append "foo" "bar") (string-append "foo" "bar")) ; => #f (eqv? (string-append "foo" "bar") (string-append "foo" "bar")) ; => #f
;; Το `equal?' υποστηρίζει την σύγκριση των παρακάτω τύπων μεταβλητών: ;; Το `equal?' υποστηρίζει την σύγκριση των παρακάτω τύπων μεταβλητών:
;; `equal?' supports the comparison of the following datatypes:
;; αλφαριθμητικά, αλφαριθμητικά από bytes, μεταβλητά ζεύγη , διανύσματα, ;; αλφαριθμητικά, αλφαριθμητικά από bytes, μεταβλητά ζεύγη , διανύσματα,
;; πίνακες κατακερματισμού και δομές. ;; πίνακες κατακερματισμού και δομές.
;; Για άλλα ήδη τύπων μεταβλητών το `equal?' και το `eqv?' επιστρέφουν το ;; Για άλλα ήδη τύπων μεταβλητών το `equal?' και το `eqv?' επιστρέφουν το
@ -426,13 +425,10 @@ m ; => '#hash((b . 2) (a . 1) (c . 3)) <-- δεν υπάρχει `d'
;;; ;;;
;;; Επανάληψη μέσα σε ακολουθίες: ;;; Επανάληψη μέσα σε ακολουθίες:
;; Το `for' επιτρέπει την επενάληψη μέσα σε πολλά ;; Το `for' επιτρέπει την επανάληψη μέσα σε πολλά
;; άλλα ήδη από ακολουθίες: Λίστες, διανύσματα, ;; άλλα ήδη από ακολουθίες: Λίστες, διανύσματα,
;; αλφαριθμητικά, σύνολα κτλ.. ;; αλφαριθμητικά, σύνολα κτλ..
;;allows iteration over many other kinds of sequences:
;; lists, vectors, strings, sets, hash tables, etc...
(for ([i (in-list '(l i s t))]) (for ([i (in-list '(l i s t))])
(displayln i)) (displayln i))
@ -488,13 +484,16 @@ m ; => '#hash((b . 2) (a . 1) (c . 3)) <-- δεν υπάρχει `d'
;; Υπάρχουν πολλά είδη απο προϋπάρχοντες τρόπους για να συλλέγουμε ;; Υπάρχουν πολλά είδη απο προϋπάρχοντες τρόπους για να συλλέγουμε
;; τιμές από τους βρόχους ;; τιμές από τους βρόχους
(for/sum ([i 10]) (* i i)) ; => 285 (for/sum ([i 10]) (* i i)) ; => 285
(for/product ([i (in-range 1 11)]) (* i i)) ; => 13168189440000 (for/product ([i (in-range 1 11)]) (* i i)) ; => 13168189440000
(for/and ([i 10] [j (in-range 10 20)]) (< i j)) ; => #t (for/and ([i 10] [j (in-range 10 20)]) (< i j)) ; => #t
(for/or ([i 10] [j (in-range 0 20 2)]) (= i j)) ; => #t (for/or ([i 10] [j (in-range 0 20 2)]) (= i j)) ; => #t
;; Και για να χρησιμοποιήσουμε ένα αφθαίρετο συνδιασμό χρησιμοποιύμε
;; Και για να χρησιμοποιήσουμε ένα αφθαίρετο συνδιασμό χρησιμοποιούμε
;; το 'for/fold' ;; το 'for/fold'
(for/fold ([sum 0]) ([i '(1 2 3 4)]) (+ sum i)) ; => 10 (for/fold ([sum 0]) ([i '(1 2 3 4)]) (+ sum i)) ; => 10
;; Αυτό συχνά μπορεί να αντικαταστήσει τους κοινούς ;; Αυτό συχνά μπορεί να αντικαταστήσει τους κοινούς
;; προστακτικούς βρόχους (imperative loops) ;; προστακτικούς βρόχους (imperative loops)

View File

@ -43,11 +43,11 @@ Scala - Η επεκτάσιμη γλώσσα
να δείτε , φαίνοται κάπως έτσι. να δείτε , φαίνοται κάπως έτσι.
*/ */
// Εκτύπωση με εξαναγκασμό νέας γραμμής στην επόμενη εκτύπωση // Εκτύπωση με νέα γραμμή στην επόμενη εκτύπωση
println("Hello world!") println("Hello world!")
println(10) println(10)
// Εκτύπωση χωρίς τον εξαναγκασμό νέας γραμμής στην επόμενη εκτύπωση // Εκτύπωση χωρίς νέα γραμμή στην επόμενη εκτύπωση
print("Hello world") print("Hello world")
// Η δήλωση μεταβλητών γίνεται χρησιμοποιώντας var ή val. // Η δήλωση μεταβλητών γίνεται χρησιμοποιώντας var ή val.
@ -62,7 +62,7 @@ y = 20 // το y είναι τώρα 20
Η Scala είναι στατικού τύπου γλώσσα, εν τούτις προσέξτε ότι στις παραπάνω Η Scala είναι στατικού τύπου γλώσσα, εν τούτις προσέξτε ότι στις παραπάνω
δηλώσεις , δεν προσδιορίσαμε κάποιον τύπο. Αυτό συμβαίνει λόγω ενός δηλώσεις , δεν προσδιορίσαμε κάποιον τύπο. Αυτό συμβαίνει λόγω ενός
χαρακτηριστικού της Scala που λέγεται συμπερασματολογία τύπων. Στις χαρακτηριστικού της Scala που λέγεται συμπερασματολογία τύπων. Στις
περισσότερες των περιπτώσεων , ο μεταγλωττιστής της Scala μπορεί να περισσότερες των περιπτώσεων, ο μεταγλωττιστής της Scala μπορεί να
μαντέψει ποιός είναι ο τύπος μιας μεταβλητής. Μπορούμε να δηλώσουμε μαντέψει ποιός είναι ο τύπος μιας μεταβλητής. Μπορούμε να δηλώσουμε
αναλυτικά τον τύπο μιάς μεταβλητής ως εξής: αναλυτικά τον τύπο μιάς μεταβλητής ως εξής:
*/ */
@ -95,7 +95,7 @@ true == false // false
/* /*
Αξιολογώντας μια έκφραση στο REPL , σας δίνεται ο τύπος και Αξιολογώντας μια έκφραση στο REPL, σας δίνεται ο τύπος και
η τιμή του αποτελέσματος η τιμή του αποτελέσματος
*/ */
@ -133,8 +133,7 @@ true == false // false
val n = 45 val n = 45
s"We have $n apples" // => "We have 45 apples" s"We have $n apples" // => "We have 45 apples"
// Expressions inside interpolated strings are also possible // Παρατηρήστε την χρήση των '{', '}'
// Εκφράσεις μέσα σε παρεμβεβλημένα αλφαριθμητικά είναι επίσης εφικτά
val a = Array(11, 9, 6) val a = Array(11, 9, 6)
s"My second daughter is ${a(0) - a(2)} years old." // => "My second daughter is 5 years old." s"My second daughter is ${a(0) - a(2)} years old." // => "My second daughter is 5 years old."
s"We have double the amount of ${n / 2.0} in apples." // => "We have double the amount of 22.5 in apples." s"We have double the amount of ${n / 2.0} in apples." // => "We have double the amount of 22.5 in apples."
@ -270,7 +269,7 @@ do {
// Η αναδρομή ουράς είναι ένας ιδιωματικός τρόπος να κάνεις επαναλαμβανόμενα // Η αναδρομή ουράς είναι ένας ιδιωματικός τρόπος να κάνεις επαναλαμβανόμενα
// πράγματα στην Scala. Οι αναδρομικές συναρτήσεις απαιτούν να γράφτεί // πράγματα στην Scala. Οι αναδρομικές συναρτήσεις απαιτούν να γράφτεί
// ρητά τον τύπο που θα επιστρέψουν , αλλιώς ο μεταγλωττιστής δεν μπορεί // ρητά ο τύπος που θα επιστρέψουν , αλλιώς ο μεταγλωττιστής δεν μπορεί
// αλλιώς να τον συνάγει. Παρακάτω είναι μια συνάρτηση που επιστρέφει Unit. // αλλιώς να τον συνάγει. Παρακάτω είναι μια συνάρτηση που επιστρέφει Unit.
def showNumbersInRange(a:Int, b:Int):Unit = { def showNumbersInRange(a:Int, b:Int):Unit = {
print(a) print(a)
@ -280,7 +279,7 @@ def showNumbersInRange(a:Int, b:Int):Unit = {
showNumbersInRange(1,14) showNumbersInRange(1,14)
// Η ροή του ελέγχου. // Έλεγχος Ροής
val x = 10 val x = 10