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.mzph.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头文件中,在使用…