Scala基礎語法

如果你之前是一名 Java 程序員,并了解 Java 語言的基礎知識,那么你能很快學會 Scala 的基礎語法。

一、基本語法

Scala 基本語法需要注意以下幾點:

  • 區分大小寫 - Scala是大小寫敏感的,這意味著標識Hello 和 hello在Scala中會有不同的含義。

  • 類名 - 對于所有的類名的第一個字母要大寫。
    如果需要使用幾個單詞來構成一個類的名稱,每個單詞的第一個字母要大寫。

    示例:class MyFirstScalaClass

  • 方法名稱 - 所有的方法名稱的第一個字母用小寫。
    如果若干單詞被用于構成方法的名稱,則每個單詞的第一個字母應大寫。

    示例:def myMethodName()

  • 程序文件名 - 程序文件的名稱應該與對象名稱完全匹配(新版本不需要了,但建議保留這種習慣)。
    保存文件時,應該保存它使用的對象名稱(記住Scala是區分大小寫),并追加".scala"為文件擴展名。 (如果文件名和對象名稱不匹配,程序將無法編譯)。

    示例: 假設"HelloWorld"是對象的名稱。那么該文件應保存為’HelloWorld.scala"

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

二、標志符

Scala 可以使用兩種形式的標志符,字符數字和符號。

字符數字使用字母或是下劃線開頭,后面可以接字母或是數字,符號""在Scala中也看作為字母。然而以""在 Scala 中也看作為字母。然而以""Scala"“開頭的標識符為保留的 Scala 編譯器產生的標志符使用,應用程序應該避免使用”$"開始的標識符,以免造成沖突。

Scala 的命名規則采用和 Java 類似的 camel 命名規則,首字符小寫,比如 toString。類名的首字符還是使用大寫。此外也應該避免使用以下劃線結尾的標志符以避免沖突。符號標志符包含一個或多個符號,如+,:,? 等,比如:

+ ++ ::: < ?> :->

Scala 內部實現時會使用轉義的標志符,比如:-> 使用 coloncoloncolonminus$greater 來表示這個符號。因此如果你需要在 Java 代碼中訪問:->方法,你需要使用 Scala 的內部名稱 coloncoloncolonminus$greater。

混合標志符由字符數字標志符后面跟著一個或多個符號組成,比如 unary_+ 為 Scala 對+方法的內部實現時的名稱。字面量標志符為使用"定義的字符串,比如 x yield

你可以在"之間使用任何有效的 Scala 標志符,Scala 將它們解釋為一個 Scala 標志符,一個典型的使用為 Thread 的 yield 方法, 在 Scala 中你不能使用 Thread.yield()是因為 yield 為 Scala 中的關鍵字, 你必須使用 Thread.yield()來使用這個方法。

三、Scala 關鍵字

下表列出了 scala 保留關鍵字,我們不能使用以下關鍵字作為變量:

abstractcasecatchclass
defdoelseextends
falsefinalfinallyfor
forSomeifimplicitimport
lazymatchnewnull
objectoverridepackageprivate
protectedreturnsealedsuper
thisthrowtraittry
truetypevalvar
whilewithyield
-:==>
<-<:<%>:
#@

四、注釋

Scala注釋很像Java和C ++注釋。

多行注釋以/開頭,以/結束。

/*This is a multiline comment:
*/

單行注釋用//開頭,并繼續到行尾:

// This is a single line comment

在Scala中,還可以嵌套多行注釋:

/*
This is an outer comment
/* And this comment
is nested
*/
Outer comment
*/

五、Scala分號

分號是表達式分隔符,它們是推斷的。

Scala將行的結尾視為表達式的結尾,除非它可以推斷表達式繼續到下一行,如下例所示:

例子

以下Trailing equals符號表示下一行上有更多代碼。

     def equalsign(s: String) = println("equalsign: " + s) 

以下開頭的大括號表示下一行有更多的代碼。

     def equalsign2(s: String) = { println("equalsign2: " + s) } 

以下跟蹤逗號,句點和運算符在下一行指示更多代碼。

      def commas(s1: String, s2: String) = Console. println("comma: " + s1 + ", " + s2)

六、Scala 包

定義包

Scala 使用 package 關鍵字定義包,在Scala將代碼定義到某個包中有兩種方式:

第一種方法和 Java 一樣,在文件的頭定義包名,這種方法就后續所有代碼都放在該包中。 比如:

package com.runoob
class HelloWorld

第二種方法有些類似 C#,如:

package com.runoob {class HelloWorld 
}

第二種方法,可以在一個文件中定義多個包。

引用

Scala 使用 import 關鍵字引用包。

import java.awt.Color  // 引入Colorimport java.awt._  // 引入包內所有成員def handler(evt: event.ActionEvent) { // java.awt.event.ActionEvent...  // 因為引入了java.awt,所以可以省去前面的部分
}

import語句可以出現在任何地方,而不是只能在文件頂部。import的效果從開始延伸到語句塊的結束。這可以大幅減少名稱沖突的可能性。

如果想要引入包中的幾個成員,可以使用selector(選取器):

import java.awt.{Color, Font}// 重命名成員
import java.util.{HashMap => JavaHashMap}// 隱藏成員
import java.util.{HashMap => _, _} // 引入了util包的所有成員,但是HashMap被隱藏了

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/535567.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535567.shtml
英文地址,請注明出處:http://en.pswp.cn/news/535567.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

DNS詳解

一、DNS 概念 人和人要互相識別和記憶,需要名字作為輔助,而對于網絡世界,在因特網內也需要一種命名系統來做類似的事情,該系統使用了域來劃分,任何一個網絡里的主機(或者路由器)都有獨一無二的域名(類似國家代碼),域又能繼續劃分為子域(類似每個國家有不同的省份代…

Shell腳本——函數

Shell 函數的本質是一段可以重復使用的腳本代碼&#xff0c;這段代碼被提前編寫好了&#xff0c;放在了指定的位置&#xff0c;使用時直接調取即可。 一、語法 Shell 函數定義的語法格式如下&#xff1a; function name() {statements[return value] }對各個部分的說明&#…

scala通過JDBC進行數據庫操作

scala通過JDBC方式操作mysql (需要加載 mysql-connector-java 驅動) maven依賴&#xff1a; <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.45</version></dependency>一…

Linux下Java的安裝與配置

0、下載好JDK安裝包后上傳到Linux服務器的/usr/local/java/下 1、解壓tar -zxvf jdk-8u251-linux-x64.tar.gz 2、改名mv jdk1.8.0_251 jdk1.8 3、配置環境變量vi /etc/profile 添加以下內容 #JAVA export JAVA_HOME/usr/local/java/jdk1.8 export JRE_HOME$JAVA_HOME/jre e…

運維同步rsync

Rsync(remote rynchronization)是一款開源的、快速的、多功能的、可實現全量以及增量的本地或者遠程數據同步的備份的優秀工具&#xff0c;可使本地主機不同分區或目錄之間及本地和遠程兩臺主機之間的數據快速同步鏡像&#xff0c;遠程備份等功能同時它在同步文件的同時可以保…

Spark初識-什么是Spark

Spark是一個基于內存的開源計算框架&#xff0c;于2009年誕生于加州大學伯克利分校AMPLab&#xff08;AMP&#xff1a;Algorithms&#xff0c;Machines&#xff0c;People&#xff09;&#xff0c;它最初屬于伯克利大學的研究性項目&#xff0c;后來在2010年正式開源&#xff0…

系統優化

1、關閉selinux sed -i ‘s/SELINUXenforcing/SELINUXdisabled’ setenforce 0 2.精簡開機服務 ntsysv setup system service

Spark初識-Spark與Hadoop的比較

Spark&#xff0c;是分布式計算平臺&#xff0c;是一個用scala語言編寫的計算框架&#xff0c;基于內存的快速、通用、可擴展的大數據分析引擎 Hadoop&#xff0c;是分布式管理、存儲、計算的生態系統&#xff1b;包括HDFS&#xff08;存儲&#xff09;、MapReduce&#xff08;…

Spark初識-Spark基本架構概覽使用

當需要處理的數據量超過了單機尺度(比如我們的計算機有4GB的內存&#xff0c;而我們需要處理100GB以上的數據)這時我們可以選擇spark集群進行計算&#xff0c;有時我們可能需要處理的數據量并不大&#xff0c;但是計算很復雜&#xff0c;需要大量的時間&#xff0c;這時我們也可…

Spark初識-彈性分布式數據集RDD

Spark 的核心是建立在統一的抽象彈性分布式數據集&#xff08;Resiliennt Distributed Datasets&#xff0c;RDD&#xff09;之上的&#xff0c;這使得 Spark 的各個組件可以無縫地進行集成&#xff0c;能夠在同一個應用程序中完成大數據處理。 一、RDD概念 RDD 是 Spark 提供…

nmon

1).采集數據&#xff1a; #nmon -s10 -c60 -f -m /home/ 參數解釋&#xff1a; -s10 每 10 秒采集一次數據。 -c60 采集 60 次&#xff0c;即為采集十分鐘的數據。 -f 生成的數據文件名中包含文件創建的時間。 -m 生成的數據文件的存放目錄。 這樣就會生成一個 nmon 文件&…

Spark入門- Spark運行Local本地模式

一、Spark單機模式部署 Spark版本 &#xff1a; spark-2.4.7-bin-hadoop2.7 1、安裝配置JDK環境 2、下載Spark 官網下載http://spark.apache.org/ 然后上傳到LInux服務器上 3、解壓 tar -zxvf spark-2.4.7-bin-hadoop2.7.tgz解壓目錄說明 bin 可執行腳本 conf …

Spark入門-了解Spark核心概念

在本文中我們將從Spark集群角度和程序應用的角度來對相關概念進行了解 一. 站在集群角度 1.1 Master Spark 特有資源調度系統的 Leader。掌管著整個集群的資源信息&#xff0c;類似于 Yarn 框架中的 ResourceManager&#xff0c;主要功能&#xff1a; 監聽 Worker&#xff0…

Spark運行standalone集群模式

spark的集群主要有三種運行模式standalone、yarn、mesos&#xff0c;其中常被使用的是standalone和yarn&#xff0c;本文了解一下什么是standalone運行模式&#xff0c;并嘗試搭建一個standalone集群 一、standalone模式 standalone模式&#xff0c;是spark自己實現的&#xf…

docker原理

a.更快速的支付和部署:開發者可以使用一個標準的鏡像來構建一套開發容器 ,開發完成之后,運維人員可以直接使用這個容器來部署代碼。 b.更高效的虛擬化: Docker容器的運行不需要額外的hypervisor支持,它是內核級的虛擬化,因此 可以實現更高的性能和效。 I 0c更輕松的遷移和擴展…

創造型模式——工廠模式

工廠模式&#xff08;Factory Pattern&#xff09;是 Java 中最常用的設計模式之一。這種類型的設計模式屬于創建型模式&#xff0c;它提供了一種創建對象的最佳方式。 在工廠模式中&#xff0c;我們在創建對象時不會對客戶端暴露創建邏輯&#xff0c;并且是通過使用一個共同的…

創造型模式——抽象工廠模式

抽象工廠模式&#xff08;Abstract Factory Pattern&#xff09;是圍繞一個超級工廠創建其他工廠。該超級工廠又稱為其他工廠的工廠。這種類型的設計模式屬于創建型模式&#xff0c;它提供了一種創建對象的最佳方式。 在抽象工廠模式中&#xff0c;接口是負責創建一個相關對象的…

Iptables防火墻原理

一、IPTABLES概念 iptables是隔離主機以及網絡的工具,通過自己設定的規則以及處理動作對數據報文進行檢測以及處理。從設備上分類,防火墻分為軟件防火墻、硬件防火墻、芯片級防火墻。從技術上分類,防火墻分為數據包過濾型防火墻、應用代理型防火墻。這是因為四層模型的每一…

創造型模式——單例模式

單例模式&#xff08;Singleton Pattern&#xff09;是 Java 中最簡單的設計模式之一。這種類型的設計模式屬于創建型模式&#xff0c;它提供了一種創建對象的最佳方式。 這種模式涉及到一個單一的類&#xff0c;該類負責創建自己的對象&#xff0c;同時確保只有單個對象被創建…

trap命令

trap命令用于指定在接收到信號后將要采取的行動,信號的信息前面已經提到。 trap 命令的一種常見用途是在腳本程序被中斷時完成清理工作。 歷史上,shell 總是用數字來代表信號,而新的腳本程字應該使用信號的名字,它們保存在用#include命令包含進來的signal.h頭文件中,在使用…