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)