如果您熟悉Java语言语法和编程,那么学习Scala将会很容易。Scala和Java之间最大的句法差异在于行结束字符的分号(;) 是可选的。

当编写Scala程序时,它可以被定义为通过调用彼此的方法进行通信的对象的集合。现在我们简单地看一下类,对象,方法和实例变量的含义。

  • 对象 - 对象有状态和行为。一个对象是类的一个实例。例如 - 狗有状态:颜色,名称,品种,它行为有:摇摆,吠叫和吃东西。
  •  - 可以将类定义为描述与该类相关的行为/状态的模板/蓝图。
  • 方法 - 一个方法基本上是一种行为。一个类可以包含很多方法。将逻辑代码写入的方法中,数据在方法中操纵并且执行所有的动作。
  • 字段 - 每个对象都有其唯一的一组实例变量,称为字段。对象的状态是由分配给这些字段的值来创建的。
  • 闭包 - 闭包是一个函数,其返回值取决于在此函数之外声明的一个或多个变量的值。
  • 特征 - 特征(Traits)封装了方法和字段定义,然后可以通过将它们混合到类中来重用它们,特征(Traits)用于通过指定支持的方法的签名来定义对象类型。

我们可以通过两种模式执行Scala程序:

  • 交互模式---命令行模式
  • 脚本模式---编程模式

基础语法

以下是Scala编程中的基本语法和编码约定。

  • 区分大小写 - Scala是区分大小写的,比如标识符Hellohello在Scala中表示不同的含义(对象)。
  • 类名称 - 对于所有类名,第一个字母应为大写。如果使用多个单词来形成类的名称,则每个内部单词的第一个字母应该是大写。
    示例 - class MyFirstScalaClassclass Employee*类等。

  • 方法名称 - 所有方法名称应以小写字母开头。如果使用多个单词形成方法的名称,则每个内部单词的第一个字母应为大写。
    示例 - def myMethodName()def getName()等。

  • 程序文件名 - 程序文件的名称应与对象名称完全匹配。保存文件时,您应该使用对象名称保存它(记住Scala是区分大小写的),并将.scala附加到文件名称的末尾。 (如果文件名和对象名不匹配,则程序将不会编译)。
    示例 - 假设HelloWorld是对象名称。 那么文件应该保存为HelloWorld.scala

  • def main(args:Array [String]) - Scala程序从main()方法开始,这是每个Scala程序的强制性部分。

Scala标识符

所有Scala组件都需要名称。用于对象,类,变量和方法的名称称为标识符。关键字不能用作标识符,标识符区分大小写。Scala支持四种类型的标识符。

字母数字标识符

字母数字标识符以字母或下划线开头,后面可以有更多的字母,数字或下划线。 $字符是Scala中的保留关键字,不应在标识符中使用。

以下是合法的字母数字标识符 -

age, salary, _value,  __1_value
Scala

以下是非法标识符 -

$salary, 123abc, -salary
Scala

运算符标识符

运算符标识符由一个或多个运算符字符组成。运算符字符是可打印的ASCII字符,如:+:?~#

以下是合法运算符标识符 -

+ ++ ::: <?> :> 
Scala

Scala编译器将在内部将操作符标识符转换成具有嵌入式$字符的合法Java标识符。例如,标识符:->将被内部表示为$colon$minus$greater

混合标识符

混合标识符由字母数字标识符组成,后面跟着一个下划线和一个操作符标识符。

以下是合法的混合标识符 -

unary_+,  myvar_=
Scala

这里,一元_+用作方法名称定义一个一元的+运算符,而myvar_=用作方法名定义一个赋值运算符(运算符重载)。

字面识别符

一个文字标识符是一个随意的字符串,包含在后面的勾号(...)中。

以下是合法的文字标识符 -

`x` `<clinit>` `yield`

Scala关键字

以下列表显示Scala中的保留字(关键字),这些保留字不能用作常量或变量或任何其他标识符名称。

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编译器忽略。

空行和空格

只包含空格的行(可能带有注释)称为空行,Scala完全忽略它。标记可以由空格字符和/或注释分隔。

换行字符

Scala是一种面向行的语言,其语句可能以分号(;)或换行符终止。语句结尾处的分号(;)通常是可选的。如果需要,您可以输入一个分号(;),但如果语句在单行上自行显示,则不需要输入。 另一方面,如果在单行上写多个语句,则需要分号。 下面的语法是多个语句的用法。

val s = "hello"; println(s) 
Scala

Scala包

一个包是一个命名的代码模块。 例如,Lift实用程序包是net.liftweb.util。包声明是源文件中的第一个非注释行,如下所示:

package com.liftcode.stuff
Scala

导入Scala软件包,以便在当前的编译范围内引用它们。 以下语句导入scala.xml包的内容 -

import scala.xml._
Scala

也可以从scala.collection.mutable包导入单个类和对象,例如:HashMap

import scala.collection.mutable.HashMap 
Scala

可以从单个包导入多个类或对象,例如,来自scala.collection.immutable包的TreeMapTreeSet -

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

转载于:https://www.cnblogs.com/xinfang520/p/7727260.html

Spark记录-Scala基础语法相关推荐

  1. 一天学完spark的Scala基础语法教程十三、文件IO操作(idea版本)

  2. 一天学完spark的Scala基础语法教程十、类和对象(idea版本)

  3. 一天学完spark的Scala基础语法教程九、迭代器(idea版本)

  4. 一天学完spark的Scala基础语法教程八、集合(idea版本)

  5. 一天学完spark的Scala基础语法教程七、数组(idea版本)

  6. 一天学完spark的Scala基础语法教程五、闭包(idea版本)

  7. 一天学完spark的Scala基础语法教程教程三、循环结构(idea版本)

  8. 一天学完spark的Scala基础语法教程二、运算符与分支语句(idea版本)

  9. 一天学完spark的Scala基础语法教程一、基础语法与变量(idea版本)

最新文章

  1. 比杠精网友更可怕的,是懂王同事
  2. 《食堂远程下单系统》需求规格说明书
  3. 【概率论】1-4:事件的的并集(Union of Events and Statical Swindles)
  4. 用SHA1或MD5 算法加密数据(示例:对用户身份验证的简单实现)
  5. Qt-线程启动与关闭实例
  6. 图像处理基本算法-形态学
  7. C语言C++中memset()函数使用和注意事项
  8. 京东与滁州达成战略合作,共建全国首座智慧型家电产地仓
  9. 【李宏毅2020 ML/DL】P57 Unsupervised Learning - Linear Methods | PCA Matrix Factorization
  10. 用busybox制作文件系统
  11. 多重重要性采样(MIS)与光线追踪技术
  12. lanhelper1.83 注册
  13. DongDong认亲戚 并查集+STL
  14. day3-转自金角大王
  15. 弹幕穿人过,视频换背景,快准狠的图像分割技术了解一下
  16. 苹果iPhone手机内文件目录大全
  17. SQL合并 合并id相同的数据
  18. Logic BIST
  19. 文献阅读 - Poisson Image Editing
  20. System.Windows.Markup.XamlParseException:““在“System.Windows.StaticResourceExtension”上提供值时引发了异常

热门文章

  1. 走向.NET架构设计—第四章—业务层分层架构(后篇)
  2. 如何在jasperreport自动生成序号
  3. 爱奇艺称告别唯流量时代 正式关闭显示前台播放量
  4. Thread类(线程)
  5. MySQL配置文件参数详解
  6. Django_ORM数据表查询总结
  7. redis应用场景(2)日志记录及指标统计
  8. Redkale 技术详解 03 -- Convert高性能序列化
  9. webform开发经验(一):Asp.Net获取Checkbox选中的值
  10. Hadoop权威指南阅读笔记