在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Scala/ Scala基礎(chǔ)語法
Scala方法重載
Scala模式匹配
Scala throw關(guān)鍵字
Scala提取器
Scala概述
Scala throws關(guān)鍵字
Scala finally塊
Scala正則表達式
Scala循環(huán)語句
Scala多線程
Scala函數(shù)
Scala final關(guān)鍵字
Scala方法覆蓋
Scala字符串
Scala線程實現(xiàn)
Scala異常處理
Scala類和對象
Scala數(shù)據(jù)類型
Scala單例和伴生對象
Scala構(gòu)造函數(shù)
Scala教程
Scala Case類和對象
Scala繼承
Scala開發(fā)環(huán)境安裝配置
Scala運算符
Scala文件I/O
Scala線程方法
Scala變量
Scala try-catch語句
Scala基礎(chǔ)語法
Scala集合
Scala數(shù)組
Scala閉包
Scala訪問修辭符
Scala this關(guān)鍵字

Scala基礎(chǔ)語法

如果您熟悉Java語言語法和編程,那么學(xué)習(xí)Scala將會很容易。Scala和Java之間最大的句法差異在于行結(jié)束字符的分號(;) 是可選的。

當(dāng)編寫Scala程序時,它可以被定義為通過調(diào)用彼此的方法進行通信的對象的集合。現(xiàn)在我們簡單地看一下類,對象,方法和實例變量的含義。

  • 對象 - 對象有狀態(tài)和行為。一個對象是類的一個實例。例如 - 狗有狀態(tài):顏色,名稱,品種,它行為有:搖擺,吠叫和吃東西。
  • - 可以將類定義為描述與該類相關(guān)的行為/狀態(tài)的模板/藍圖。
  • 方法 - 一個方法基本上是一種行為。一個類可以包含很多方法。將邏輯代碼寫入的方法中,數(shù)據(jù)在方法中操縱并且執(zhí)行所有的動作。
  • 字段 - 每個對象都有其唯一的一組實例變量,稱為字段。對象的狀態(tài)是由分配給這些字段的值來創(chuàng)建的。
  • 閉包 - 閉包是一個函數(shù),其返回值取決于在此函數(shù)之外聲明的一個或多個變量的值。
  • 特征 - 特征(Traits)封裝了方法和字段定義,然后可以通過將它們混合到類中來重用它們,特征(Traits)用于通過指定支持的方法的簽名來定義對象類型。

第一個Scala項目

我們可以通過兩種模式執(zhí)行Scala程序:

  • 交互模式
  • 腳本模式

1. 交互模式

打開命令提示符并使用以下命令打開Scala

注意: 需要先下載: scala-2.12.x.tgz ,下載地址: http://downloads.lightbend.com/scala/2.12.3/scala-2.12.3.tgz ,并解壓到一個目錄,這里解壓到:D:\software\ ,

打開命令提示符進入到目錄:D:\software\scala-2.12.3\bin 執(zhí)行如下命令運行程序 -

D:\software\scala-2.12.3\bin> scala
Welcome to Scala 2.12.3 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_65).
Type in expressions for evaluation. Or try :help.

scala> println("Hello, Scala!");
Hello, Scala!

scala>

2. 腳本模式

使用以下說明在腳本模式下編寫Scala程序。打開記事本創(chuàng)建一個源文件:HelloWorld.scala,保存在目錄:D:\software\scala-2.12.3\bin 下,并在其中編寫以下代碼 -

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
   }
}

打開命令提示符窗口并轉(zhuǎn)到保存程序文件的目錄。使用'scalac'命令編譯Scala程序,它將在當(dāng)前目錄中生成一些類文件。其中一個將被編譯生成為HelloWorld.class。 這是一個使用'scala'命令在Java虛擬機(JVM)上運行的字節(jié)碼。

使用以下命令來編譯和執(zhí)行Scala程序及輸出結(jié)果如下 -

D:\software\scala-2.12.3\bin>scalac HelloWorld.scala

D:\software\scala-2.12.3\bin>scala HelloWorld
Hello, world!

D:\software\scala-2.12.3\bin>

基礎(chǔ)語法

以下是Scala編程中的基本語法和編碼約定。

  • 區(qū)分大小寫 - Scala是區(qū)分大小寫的,比如標識符Hellohello在Scala中表示不同的含義(對象)。
  • 類名稱 - 對于所有類名,第一個字母應(yīng)為大寫。如果使用多個單詞來形成類的名稱,則每個內(nèi)部單詞的第一個字母應(yīng)該是大寫。
    示例 - class MyFirstScalaClass,class Employee*類等。

  • 方法名稱 - 所有方法名稱應(yīng)以小寫字母開頭。如果使用多個單詞形成方法的名稱,則每個內(nèi)部單詞的第一個字母應(yīng)為大寫。
    示例 - def myMethodName(),def getName()等。

  • 程序文件名 - 程序文件的名稱應(yīng)與對象名稱完全匹配。保存文件時,您應(yīng)該使用對象名稱保存它(記住Scala是區(qū)分大小寫的),并將.scala附加到文件名稱的末尾。 (如果文件名和對象名不匹配,則程序?qū)⒉粫幾g)。
    示例 - 假設(shè)HelloWorld是對象名稱。 那么文件應(yīng)該保存為HelloWorld.scala。

  • def main(args:Array [String]) - Scala程序從main()方法開始,這是每個Scala程序的強制性部分。

Scala標識符

所有Scala組件都需要名稱。用于對象,類,變量和方法的名稱稱為標識符。關(guān)鍵字不能用作標識符,標識符區(qū)分大小寫。Scala支持四種類型的標識符。

字母數(shù)字標識符

字母數(shù)字標識符以字母或下劃線開頭,后面可以有更多的字母,數(shù)字或下劃線。 $字符是Scala中的保留關(guān)鍵字,不應(yīng)在標識符中使用。

以下是合法的字母數(shù)字標識符 -

age, salary, _value,  __1_value

以下是非法標識符 -

$salary, 123abc, -salary

運算符標識符

運算符標識符由一個或多個運算符字符組成。運算符字符是可打印的ASCII字符,如:+:,?~#。

以下是合法運算符標識符 -

+ ++ ::: <?> :>

Scala編譯器將在內(nèi)部將操作符標識符轉(zhuǎn)換成具有嵌入式$字符的合法Java標識符。例如,標識符:->將被內(nèi)部表示為$colon$minus$greater。

混合標識符

混合標識符由字母數(shù)字標識符組成,后面跟著一個下劃線和一個操作符標識符。

以下是合法的混合標識符 -

unary_+,  myvar_=

這里,一元_+用作方法名稱定義一個一元的+運算符,而myvar_=用作方法名定義一個賦值運算符(運算符重載)。

字面識別符

一個文字標識符是一個隨意的字符串,包含在后面的勾號(...)中。

以下是合法的文字標識符 -

`x` `<clinit>` `yield`

Scala關(guān)鍵字

以下列表顯示Scala中的保留字(關(guān)鍵字),這些保留字不能用作常量或變量或任何其他標識符名稱。

abstract case catch class
def do else extends
false final finally for
forSome if implicit import
lazy match new Null
object override package private
protected return sealed super
this throw trait Try
true type val Var
while with yield
- : = =>
<- <: <% >:
# @

Scala注釋

Scala支持與Java類似的單行和多行注釋。多行注釋可以嵌套,但需要正確嵌套。注釋中任何字符都被Scala編譯器忽略。

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!") 
   }
}

空行和空格

只包含空格的行(可能帶有注釋)稱為空行,Scala完全忽略它。標記可以由空格字符和/或注釋分隔。

換行字符

Scala是一種面向行的語言,其語句可能以分號(;)或換行符終止。語句結(jié)尾處的分號(;)通常是可選的。如果需要,您可以輸入一個分號(;),但如果語句在單行上自行顯示,則不需要輸入。 另一方面,如果在單行上寫多個語句,則需要分號。 下面的語法是多個語句的用法。

val s = "hello"; println(s)

Scala包

一個包是一個命名的代碼模塊。 例如,Lift實用程序包是net.liftweb.util。包聲明是源文件中的第一個非注釋行,如下所示:

package com.liftcode.stuff

導(dǎo)入Scala軟件包,以便在當(dāng)前的編譯范圍內(nèi)引用它們。 以下語句導(dǎo)入scala.xml包的內(nèi)容 -

import scala.xml._

也可以從scala.collection.mutable包導(dǎo)入單個類和對象,例如:HashMap,

import scala.collection.mutable.HashMap

可以從單個包導(dǎo)入多個類或?qū)ο螅?,來?code>scala.collection.immutable包的TreeMapTreeSet -

import scala.collection.immutable.{TreeMap, TreeSet}

應(yīng)用動態(tài)

一個能夠進行動態(tài)調(diào)用的標記特征。此特征的實例x允許方法調(diào)用x.meth(args)用于任意方法名稱和參數(shù)列表args以及對任意字段名稱字段的字段訪問x.field。此功能在Scala-2.10中引入。

如果調(diào)用不是由本機支持的(即,如果類型檢查失敗),則根據(jù)以下規(guī)則重寫:

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)

上一篇:Scala方法覆蓋下一篇:Scala模式匹配