Scala - Temel Sözdizimi
Java konusunda iyi bir anlayışa sahipseniz, Scala'yı öğrenmeniz çok kolay olacaktır. Scala ve Java arasındaki en büyük sözdizimsel fark, ';' satır sonu karakteri isteğe bağlıdır.
Bir Scala programını düşündüğümüzde, birbirlerinin yöntemlerini çağırarak iletişim kuran nesnelerin bir koleksiyonu olarak tanımlanabilir. Şimdi kısaca sınıf, nesne, yöntemler ve örnek değişkenlerinin ne anlama geldiğine bakalım.
Object- Nesnelerin durumları ve davranışları vardır. Bir nesne, bir sınıfın bir örneğidir. Örnek - Bir köpeğin durumları vardır - rengi, adı, cinsi ve davranışları - sallanma, havlama ve yeme.
Class - Bir sınıf, sınıfla ilgili davranışları / durumları tanımlayan bir şablon / plan olarak tanımlanabilir.
Methods- Yöntem temelde bir davranıştır. Bir sınıf birçok yöntem içerebilir. Mantıkların yazıldığı, verilerin manipüle edildiği ve tüm eylemlerin yürütüldüğü yöntemlerdedir.
Fields- Her nesnenin, alan adı verilen benzersiz örnek değişkenleri vardır. Bir nesnenin durumu, bu alanlara atanan değerler tarafından oluşturulur.
Closure - bir closure dönüş değeri, bu işlevin dışında bildirilen bir veya daha fazla değişkenin değerine bağlı olan bir işlevdir.
Traits- Bir özellik, yöntemi ve alan tanımlarını kapsüller ve daha sonra bunları sınıflara karıştırarak yeniden kullanılabilir. Özellikler, desteklenen yöntemlerin imzasını belirterek nesne türlerini tanımlamak için kullanılır.
İlk Scala Programı
Bir Scala programını iki modda çalıştırabiliriz: biri interactive mode ve diğeri script mode.
Etkileşimli Mod
Komut istemini açın ve Scala'yı açmak için aşağıdaki komutu kullanın.
\>scala
Sisteminizde Scala kuruluysa, aşağıdaki çıktı görüntülenecektir -
Welcome to Scala version 2.9.0.1
Type in expressions to have them evaluated.
Type :help for more information.
Scala isteminin sağına aşağıdaki metni yazın ve Enter tuşuna basın -
scala> println("Hello, Scala!");
Aşağıdaki sonucu verecektir -
Hello, Scala!
Komut Dosyası Modu
Komut modunda bir Scala programı yazmak için aşağıdaki talimatları kullanın. Not defterini açın ve aşağıdaki kodu içine ekleyin.
Misal
object HelloWorld {
/* This is my first java program.
* This will print 'Hello World' as the output
*/
def main(args: Array[String]) {
println("Hello, world!") // prints Hello World
}
}
Dosyayı farklı kaydedin - HelloWorld.scala.
Komut istemi penceresini açın ve program dosyasının kaydedildiği dizine gidin. 'scalac'command Scala programını derlemek için kullanılır ve mevcut dizinde birkaç sınıf dosyası oluşturur. Biri aranacakHelloWorld.class. Bu, Java Virtual Machine (JVM) üzerinde 'kullanarak çalışacak bir bayt kodudur.scalakomut.
Scala programınızı derlemek ve çalıştırmak için aşağıdaki komutu kullanın.
\> scalac HelloWorld.scala
\> scala HelloWorld
Çıktı
Hello, World!
Temel Sözdizimi
Aşağıdakiler, Scala programlamadaki temel sözdizimi ve kodlama kurallarıdır.
Case Sensitivity - Scala büyük / küçük harfe duyarlıdır, bu da tanımlayıcı anlamına gelir Hello ve hello Scala'da farklı bir anlam taşır.
Class Names- Tüm sınıf isimleri için ilk harf Büyük Harf olmalıdır. Sınıfın bir adını oluşturmak için birkaç kelime kullanılırsa, her bir iç kelimenin ilk harfi Büyük Harf olmalıdır.
Example - sınıf MyFirstScalaClass.
Method Names- Tüm yöntem adları Küçük Harf ile başlamalıdır. Yöntemin adını oluşturmak için birden fazla kelime kullanılıyorsa, her bir iç kelimenin ilk harfi Büyük Harf olmalıdır.
Example - def myMethodName ()
Program File Name- Program dosyasının adı, nesne adıyla tam olarak eşleşmelidir. Dosyayı kaydederken, nesne adını kullanarak kaydetmelisiniz (Scala'nın büyük / küçük harf duyarlı olduğunu unutmayın) ve '.scala'ismin sonuna kadar. (Dosya adı ve nesne adı eşleşmezse, programınız derlenmeyecektir).
Example- 'MerhabaDünya'nın nesne adı olduğunu varsayın. Ardından dosya 'HelloWorld.scala' olarak kaydedilmelidir.
def main(args: Array[String]) - Scala programı işleme, her Scala Programının zorunlu bir parçası olan main () yönteminden başlar.
Scala Tanımlayıcıları
Tüm Scala bileşenleri ad gerektirir. Nesneler, sınıflar, değişkenler ve yöntemler için kullanılan isimler tanımlayıcılar olarak adlandırılır. Bir anahtar kelime, tanımlayıcı olarak kullanılamaz ve tanımlayıcılar büyük / küçük harfe duyarlıdır. Scala, dört tür tanımlayıcıyı destekler.
Alfasayısal Tanımlayıcılar
Alfasayısal tanımlayıcı bir harf veya alt çizgiyle başlar ve ardından başka harfler, rakamlar veya alt çizgiler gelebilir. '$' Karakteri Scala'da ayrılmış bir anahtar kelimedir ve tanımlayıcılarda kullanılmamalıdır.
Aşağıdakiler legal alphanumeric identifiers -
age, salary, _value, __1_value
Aşağıdakiler illegal identifiers -
$salary, 123abc, -salary
Operatör Tanımlayıcıları
Bir operatör tanımlayıcı, bir veya daha fazla operatör karakterinden oluşur. Operatör karakterleri, +,:,?, ~ Veya # gibi yazdırılabilir ASCII karakterleridir.
Yasal operatör tanımlayıcıları aşağıdadır -
+ ++ ::: <?> :>
Scala derleyicisi, operatör tanımlayıcılarını gömülü $ karakterleri olan yasal Java tanımlayıcılarına dönüştürmek için dahili olarak "karıştırır". Örneğin, tanımlayıcı: -> dahili olarak $ kolon $ eksi $ daha büyük olarak temsil edilir.
Karışık Tanımlayıcılar
Karma tanımlayıcı, alfanümerik bir tanımlayıcıdan oluşur, bunu bir alt çizgi ve bir operatör tanımlayıcı takip eder.
Aşağıdakiler yasal karma tanımlayıcılardır -
unary_+, myvar_=
Burada, bir yöntem adı olarak kullanılan unary_ +, bir tekli + işlecini tanımlar ve yöntem adı olarak kullanılan myvar_ = bir atama işlecini (operatör aşırı yükleme) tanımlar.
Değişmez Tanımlayıcılar
Bir değişmez tanımlayıcı, arka işaretler ("...") İçine alınmış rastgele bir dizedir.
Aşağıdakiler yasal gerçek tanımlayıcılardır -
`x` `<clinit>` `yield`
Scala Anahtar Kelimeleri
Aşağıdaki liste Scala'daki ayrılmış sözcükleri göstermektedir. Bu ayrılmış sözcükler, sabit ya da değişken ya da başka herhangi bir tanımlayıcı isim olarak kullanılamaz.
Öz | durum | tutmak | sınıf |
def | yapmak | Başka | genişler |
yanlış | final | en sonunda | için |
bazı | Eğer | örtük | ithalat |
tembel | eşleşme | yeni | Boş |
nesne | geçersiz kılmak | paket | özel |
korumalı | dönüş | Mühürlü | Süper |
bu | atmak | kişisel özellik | Deneyin |
doğru | tip | val | Var |
süre | ile | Yol ver | |
- | : | = | => |
<- | <: | <% | >: |
# | @ |
Scala'daki Yorumlar
Scala, Java'ya çok benzer tek satırlı ve çok satırlı yorumları destekler. Çok satırlı yorumlar yuvalanmış olabilir, ancak düzgün şekilde yuvalanmaları gerekir. Herhangi bir yorumun içinde bulunan tüm karakterler Scala derleyicisi tarafından göz ardı edilir.
object HelloWorld {
/* This is my first java program.
* This will print 'Hello World' as the output
* This is an example of multi-line comments.
*/
def main(args: Array[String]) {
// Prints Hello World
// This is also an example of single line comment.
println("Hello, world!")
}
}
Boş Satırlar ve Boşluk
Yalnızca beyaz boşluk içeren ve muhtemelen yorum içeren bir satır boş satır olarak bilinir ve Scala bunu tamamen yok sayar. Belirteçler boşluk karakterleri ve / veya açıklamalarla ayrılabilir.
Newline Karakterler
Scala, ifadelerin noktalı virgül (;) veya satırsonu ile sonlandırılabildiği satır odaklı bir dildir. Bir ifadenin sonundaki noktalı virgül genellikle isteğe bağlıdır. İsterseniz bir tane yazabilirsiniz, ancak ifade tek bir satırda tek başına görünüyorsa yapmanız gerekmez. Öte yandan, tek bir satıra birden çok ifade yazarsanız, noktalı virgül gerekir. Aşağıdaki sözdizimi, çoklu ifadelerin kullanımıdır.
val s = "hello"; println(s)
Scala Paketleri
Paket, adlandırılmış bir kod modülüdür. Örneğin, Lift hizmet paketi net.liftweb.util'dir. Paket bildirimi, aşağıdaki gibi kaynak dosyadaki ilk yorum olmayan satırdır -
package com.liftcode.stuff
Scala paketleri, geçerli derleme kapsamında başvurulabilecek şekilde içe aktarılabilir. Aşağıdaki ifade scala.xml paketinin içeriğini içe aktarır -
import scala.xml._
Tek bir sınıf ve nesneyi içe aktarabilirsiniz, örneğin scala.collection.mutable paketinden HashMap -
import scala.collection.mutable.HashMap
Scala.collection.immutable paketinden TreeMap ve TreeSet gibi tek bir paketten birden fazla sınıf veya nesneyi içe aktarabilirsiniz -
import scala.collection.immutable.{TreeMap, TreeSet}
Dinamik Uygula
Dinamik çağrılar sağlayan bir işaretleyici özellik. Bu özelliğin x örnekleri, isteğe bağlı yöntem adları meth ve bağımsız değişken listeleri için yöntem çağrılarına x.meth (args) ve isteğe bağlı alan adları alanı için x.field alan erişimine izin verir. Bu özellik Scala-2.10'da sunulmuştur.
Bir çağrı yerel olarak x tarafından desteklenmiyorsa (yani tür denetimi başarısız olursa), aşağıdaki kurallara göre yeniden yazılır -
foo.method("blah") ~~> foo.applyDynamic("method")("blah")
foo.method(x = "blah") ~~> foo.applyDynamicNamed("method")(("x", "blah"))
foo.method(x = 1, 2) ~~> foo.applyDynamicNamed("method")(("x", 1), ("", 2))
foo.field ~~> foo.selectDynamic("field")
foo.varia = 10 ~~> foo.updateDynamic("varia")(10)
foo.arr(10) = 13 ~~> foo.selectDynamic("arr").update(10, 13)
foo.arr(10) ~~> foo.applyDynamic("arr")(10)