Update scala-gr.html.markdown

This commit is contained in:
Gloria Dwomoh 2015-10-18 00:02:18 +03:00
parent df1f9fdb9e
commit 989615be41

View File

@ -40,7 +40,7 @@ Scala - Η επεκτάσιμη γλώσσα
/* /*
Τα σχόλια που επεκτείνονται σε πολλές γραμμές , όπως μπορείτε Τα σχόλια που επεκτείνονται σε πολλές γραμμές , όπως μπορείτε
να δείτε , φαίνοται κάπως έτσι. να δείτε , φαίνονται κάπως έτσι.
*/ */
// Εκτύπωση με νέα γραμμή στην επόμενη εκτύπωση // Εκτύπωση με νέα γραμμή στην επόμενη εκτύπωση
@ -59,12 +59,12 @@ var y = 10
y = 20 // το y είναι τώρα 20 y = 20 // το y είναι τώρα 20
/* /*
Η Scala είναι στατικού τύπου γλώσσα, εν τούτις προσέξτε ότι στις παραπάνω Η Scala είναι στατικού τύπου γλώσσα, εν τούτοις προσέξτε ότι στις παραπάνω
δηλώσεις , δεν προσδιορίσαμε κάποιον τύπο. Αυτό συμβαίνει λόγω ενός δηλώσεις , δεν προσδιορίσαμε κάποιον τύπο. Αυτό συμβαίνει λόγω ενός
χαρακτηριστικού της Scala που λέγεται συμπερασματολογία τύπων. Στις χαρακτηριστικού της Scala που λέγεται συμπερασματολογία τύπων. Στις
περισσότερες των περιπτώσεων, ο μεταγλωττιστής της Scala μπορεί να περισσότερες των περιπτώσεων, ο μεταγλωττιστής της Scala μπορεί να
μαντέψει ποιός είναι ο τύπος μιας μεταβλητής. Μπορούμε να δηλώσουμε μαντέψει ποιος είναι ο τύπος μιας μεταβλητής. Μπορούμε να δηλώσουμε
αναλυτικά τον τύπο μιάς μεταβλητής ως εξής: αναλυτικά τον τύπο μιας μεταβλητής ως εξής:
*/ */
val z: Int = 10 val z: Int = 10
val a: Double = 1.0 val a: Double = 1.0
@ -85,7 +85,7 @@ false
true == false // false true == false // false
10 > 5 // true 10 > 5 // true
// Η αριθμιτική είναι όπως τα συνηθισμένα // Η αριθμητική είναι όπως τα συνηθισμένα
1 + 1 // 2 1 + 1 // 2
2 - 1 // 1 2 - 1 // 1
5 * 3 // 15 5 * 3 // 15
@ -117,14 +117,14 @@ true == false // false
"Τα αλφαριθμητικά στην Scala περικλείονται από διπλά εισαγωγικά" "Τα αλφαριθμητικά στην Scala περικλείονται από διπλά εισαγωγικά"
'a' // Ένας χαρακτήρας στην Scala 'a' // Ένας χαρακτήρας στην Scala
// res30: Char = a // res30: Char = a
// 'Αλφαριθημτικά με μονά εισαγωγικά δεν υφίστανται <= Αυτό θα προκαλέσει σφάλμα. // Αλφαριθημτικά με μονά εισαγωγικά δεν υφίστανται <= Αυτό θα προκαλέσει σφάλμα.
// Τα αλφαριθμητικά έχουν τις συνηθισμένες μεθόδους της Java ορισμένες πάνω τους. // Τα αλφαριθμητικά έχουν τις συνηθισμένες μεθόδους της Java ορισμένες πάνω τους.
"hello world".length "hello world".length
"hello world".substring(2, 6) "hello world".substring(2, 6)
"hello world".replace("C", "3") "hello world".replace("C", "3")
// Έχουν επίσης μερικές επιπλένον μεθόδους Scala. // Έχουν επίσης μερικές επιπλέον μεθόδους Scala.
// Δείτε επίσης : scala.collection.immutable.StringOps // Δείτε επίσης : scala.collection.immutable.StringOps
"hello world".take(5) "hello world".take(5)
"hello world".drop(5) "hello world".drop(5)
@ -253,7 +253,7 @@ r foreach println
var i = 0 var i = 0
while (i < 10) { println("i " + i); i+=1 } while (i < 10) { println("i " + i); i+=1 }
while (i < 10) { println("i " + i); i+=1 } // Ναι ξανά! Τι συνέβει; Γιατί; while (i < 10) { println("i " + i); i+=1 } // Ναι ξανά! Τι συνέβη; Γιατί;
i // Εμφάνισε την τιμή του i. Σημειώστε ότι ένας βρόχος while είναι βρόχος i // Εμφάνισε την τιμή του i. Σημειώστε ότι ένας βρόχος while είναι βρόχος
// με την κλασική έννοια - εκτελείται σειριακά καθώς αλλάζει η μεταβλητή // με την κλασική έννοια - εκτελείται σειριακά καθώς αλλάζει η μεταβλητή
@ -268,7 +268,7 @@ do {
} while (x < 10) } while (x < 10)
// Η αναδρομή ουράς είναι ένας ιδιωματικός τρόπος να κάνεις επαναλαμβανόμενα // Η αναδρομή ουράς είναι ένας ιδιωματικός τρόπος να κάνεις επαναλαμβανόμενα
// πράγματα στην Scala. Οι αναδρομικές συναρτήσεις απαιτούν να γράφτεί // πράγματα στην Scala. Οι αναδρομικές συναρτήσεις απαιτούν να γραφτεί
// ρητά ο τύπος που θα επιστρέψουν, αλλιώς ο μεταγλωττιστής δεν μπορεί // ρητά ο τύπος που θα επιστρέψουν, αλλιώς ο μεταγλωττιστής δεν μπορεί
// αλλιώς να τον συνάγει. Παρακάτω είναι μια συνάρτηση που επιστρέφει Unit. // αλλιώς να τον συνάγει. Παρακάτω είναι μια συνάρτηση που επιστρέφει Unit.
def showNumbersInRange(a:Int, b:Int):Unit = { def showNumbersInRange(a:Int, b:Int):Unit = {
@ -332,7 +332,7 @@ s(1)
val divideInts = (x:Int, y:Int) => (x / y, x % y) val divideInts = (x:Int, y:Int) => (x / y, x % y)
divideInts(10,3) // Η συνάρτηση divideInts επιστρέφει το αποτέλεσμα divideInts(10,3) // Η συνάρτηση divideInts επιστρέφει το αποτέλεσμα
// της ακαίρεας διαίρεσης και το υπόλοιπο. // της ακέραιας διαίρεσης και το υπόλοιπο.
// Για να έχουμε πρόσβαση στα στοιχεία μιας πλειάδας, χρησιμοποιούμε το _._n // Για να έχουμε πρόσβαση στα στοιχεία μιας πλειάδας, χρησιμοποιούμε το _._n
// όπου το n είναι ο δείκτης με βάση το 1 του στοιχείου. // όπου το n είναι ο δείκτης με βάση το 1 του στοιχείου.
@ -349,7 +349,7 @@ d._2
/* /*
Ότι έχουμε κάνει ως τώρα σε αυτό το tutorial ήταν απλές εκφράσεις Ότι έχουμε κάνει ως τώρα σε αυτό το tutorial ήταν απλές εκφράσεις
(τιμές , συναρτήσεις , κτλ). Αυτές οι εκφράσεις βολεύουν όταν τις (τιμές, συναρτήσεις, κτλ.). Αυτές οι εκφράσεις βολεύουν όταν τις
γράφουμε στο REPL για γρήγορες δοκιμές, αλλά δεν μπορούν να υπάρχουν γράφουμε στο REPL για γρήγορες δοκιμές, αλλά δεν μπορούν να υπάρχουν
από μόνες τους σε ένα αρχείο Scala. Για παράδειγμα , δεν μπορούμε να από μόνες τους σε ένα αρχείο Scala. Για παράδειγμα , δεν μπορούμε να
έχουμε μόνο ένα "val x = 5" στο αρχείο Scala. Αντί αυτού , τα μόνα έχουμε μόνο ένα "val x = 5" στο αρχείο Scala. Αντί αυτού , τα μόνα
@ -394,7 +394,7 @@ println(mydog.bark) // => "Woof, woof!"
// αυτές καθ' αυτές, αλλά η συμπρεριφορά που σχετίζεται με όλα τα instances // αυτές καθ' αυτές, αλλά η συμπρεριφορά που σχετίζεται με όλα τα instances
// της κλάσης πάνε μέσα στο object. Η διαφορά είναι παρόμοια με τις // της κλάσης πάνε μέσα στο object. Η διαφορά είναι παρόμοια με τις
// μεθόδους κλάσεων σε σχέση με στατικές μεθόδους σε άλλες γλώσσες. // μεθόδους κλάσεων σε σχέση με στατικές μεθόδους σε άλλες γλώσσες.
// Προσέξτε οτι τα objects και οι κλάσεις μπορούν να έχουν το ίδιο όνομα. // Προσέξτε ότι τα objects και οι κλάσεις μπορούν να έχουν το ίδιο όνομα.
object Dog { object Dog {
def allKnownBreeds = List("pitbull", "shepherd", "retriever") def allKnownBreeds = List("pitbull", "shepherd", "retriever")
def createDog(breed: String) = new Dog(breed) def createDog(breed: String) = new Dog(breed)
@ -402,7 +402,7 @@ object Dog {
// Οι κλάσεις περίπτωσης (case classes) είναι που έχουν την επιπλέον // Οι κλάσεις περίπτωσης (case classes) είναι που έχουν την επιπλέον
// λειτουργικότητα ενσωματωμένη. Μιά συνήθης ερώτηση για αρχάριους στην // λειτουργικότητα ενσωματωμένη. Μιά συνήθης ερώτηση για αρχάριους στην
// Scala είναι πότε να χρησιμοπούνται κλάσεις και πότε case κλάσεις. // Scala είναι πότε να χρησιμοποιούνται κλάσεις και πότε case κλάσεις.
// Γενικά οι κλάσεις τείνουν να εστιάζουν στην ενθυλάκωση, τον // Γενικά οι κλάσεις τείνουν να εστιάζουν στην ενθυλάκωση, τον
// πολυμορφισμό και τη συμπεριφορά. Οι τιμές μέσα σε αυτές τις κλάσεις // πολυμορφισμό και τη συμπεριφορά. Οι τιμές μέσα σε αυτές τις κλάσεις
// τείνουν να είναι private , και μόνο οι μέθοδοι είναι εκτεθειμένες. // τείνουν να είναι private , και μόνο οι μέθοδοι είναι εκτεθειμένες.
@ -411,7 +411,7 @@ object Dog {
// έχουν παρενέργειες. // έχουν παρενέργειες.
case class Person(name: String, phoneNumber: String) case class Person(name: String, phoneNumber: String)
// Δημιουργία ενός instance. Πραρατηρήστε ότι τα case classes // Δημιουργία ενός instance. Παρατηρήστε ότι τα case classes
// δεν χρειάζονται την λέξη "new" . // δεν χρειάζονται την λέξη "new" .
val george = Person("George", "1234") val george = Person("George", "1234")
val kate = Person("Kate", "4567") val kate = Person("Kate", "4567")
@ -419,7 +419,7 @@ val kate = Person("Kate", "4567")
// Με τα case classes, παίρνεις μερικά προνόμια δωρεάν , όπως: // Με τα case classes, παίρνεις μερικά προνόμια δωρεάν , όπως:
george.phoneNumber // => "1234" george.phoneNumber // => "1234"
// Ελέχγεται η ισότητα για κάθε πεδίο (δεν χρειάζεται να // Ελέγχεται η ισότητα για κάθε πεδίο (δεν χρειάζεται να
// κάνουμε override στο .equals) // κάνουμε override στο .equals)
Person("George", "1234") == Person("Kate", "1236") // => false Person("George", "1234") == Person("Kate", "1236") // => false
@ -509,7 +509,7 @@ List(1, 2, 3) map (x => x + 10)
// ένα όρισμα στην ανώνυμη συνάρτηση. Έτσι δεσμεύεται ως η μεταβλητή. // ένα όρισμα στην ανώνυμη συνάρτηση. Έτσι δεσμεύεται ως η μεταβλητή.
List(1, 2, 3) map (_ + 10) List(1, 2, 3) map (_ + 10)
// Αν το μπλόκ της ανώνυμης συνάρτησης ΚΑΙ η συνάρτηση που εφαρμόζεται // Αν το μπλοκ της ανώνυμης συνάρτησης ΚΑΙ η συνάρτηση που εφαρμόζεται
// (στην περίπτωσή μας το foreach και το println) παίρνουν ένα όρισμα // (στην περίπτωσή μας το foreach και το println) παίρνουν ένα όρισμα
// μπορείτε να παραλείψετε την κάτω παύλα. // μπορείτε να παραλείψετε την κάτω παύλα.
List("Dom", "Bob", "Natalia") foreach println List("Dom", "Bob", "Natalia") foreach println