scala编码

1、Scala高级语言

Scala简介

Scala是一门类Java的多范式语言,它整合了面向对象编程和函数式编程的最佳特性。具体来讲
Scala运行于Java虚拟机(JVM)之上,井且兼容现有的Java程序,同样具有跨平台、可移植性好、方便的垃圾回收等特性
Scala是一门纯粹的面向对象的语言
Scala也是一门函数式语言

Scala也是一门更适合大数据的语言
Scala对集合类型数据处理有非常好的支持
Spark的底层用Scala编写

编程范式

编程范式是指计算机编程的基本风格或典范模式。常见的编程范式主要包括命令式编程和西数式编程。面向对象编程就属于命令式编程,比如C++、Java等
命令式语言是植根于冯•诺依曼体系的,一个命令式程序就是一个冯•诺依曼机的指令序列,给机器提供一条又一条的命令序列让其原封不动地执行
函数式编程,又称泛函编程,它将计算机的计算视为数学上的函数计算
函数编程语言最重要的基础是入演算,入演算对函数式编程特别是Lisp语言有着巨大的影响。典型的函数式语言包括Haskell、 Erlang和Lisp等
函数式编程与命令式编程
命令式编程涉及多线程之间的状态共享,需要锁机制实现并发控制
函数式编程不会在多个线程之间共享状态,不需要用锁机制,可以更好并行处理,充分利用多核CPU井行处理能力

1.1 Scala简介
Scala是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性。 Scala运行在Java虚拟机上,并兼容现有的Java程序。 Scala源代码被编译成Java字节码,所以它可以运行于JVM之上,并可以调用现有的Java类库。 函数编程范式更适合用于Map/Reduce和大数据模型,着眼于函数本身,函数范式逻辑清晰、简单,非常适合用于处理基于不变数据的批量处理工作。 像Spark,kafka等都是采用Scala开发的,所以学习好大数据,掌握scala是必要的。Flink是带有scala的api支持。 官网:The Scala Programming Language
安装方法:scala部署使用方法

1.5 Scala 编码规范
1.5.1 文件名和编码
#源文件名必须和它包含的顶层类名保持一致,包括大小写,并以.scala作为后缀名。
#源文件编码必须是 UTF-8
1.5.2 特殊字符

空格

除了换行符之外,ASCII空格(0x20)是唯一合法的空格字符。这意味着

  • 所有在源代码中(包括字符、字符串以及注释中)出现的其他空格字符需要转义,例如 Tab\t表示。

  • 缩进必须使用 4个空格 而不是 Tab

特殊转义字符

对于有特殊转义表示的字符 \b, \t, \n, \f, \r, \", \', \\,禁止使用其它等价转义方式。例如\012或者\u00a表示。

1.5.3 代码书写规范

列宽:每行不超过150个字符

缩进:4个空格,严禁使用Tab

括号的使用

  • 左花括号({)前不能换行,在其后换行。

  • 在右花括号(})前要有换行。

  • 如果右花括号是一句语句、一个方法、构造函数或非匿名类的结尾,其后需要换行。

new MyClass() { // 左花括号前不能换行,在其后换行@Overridedef method():Unit= {if (condition()) {try {do {something()} while (!stop()) // do-while中间的右花括号后} catch  { // try-catch中间的右花括号后无需换行case e:Exception =>recover()} // try-catch结束,右花括号后需要换行} else { // if-else中间的右花括号后无需换行doSomethingElese()} // if-else结束,右花括号后需要换行}

其他:scala中的简单表达式可以省略括号

// 推荐
def square(x: Int) = x * x
val y = if (x < 0) -x else x 
if(cond1){// one line statement
}else{// one line statement
}
​
// 避免
if (x < 0) -x
elsex

空行的使用

在以下情况下增加空行:

  • 在类的不同的成员间增加空行,包括:成员变量、构造函数、方法、内部类、静态初始化块、实例初始化块等两个成员变量声明之间可以不加空行。空行通常用于对成员变量进行逻辑分组

  • 方法体内,按需增加空行,以便从逻辑上对语句进行分组

  • 禁止使用连续的空行

1.5.4 注释风格

使用java风格的注释,不用使用scala风格

/** 单行注释 */
// 单行注释
​
/*** java风格的多行注释* 推荐使用*/
​
/** scala风格的注释* 不推荐使用*/
1.5.5 命名规范

基本原则:驼峰命名,命名有业务含义。

val orderName = "name"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/209750.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

启动游戏出现concrt140.dll错误的8种解决方法

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是找不到concrt140.dll文件。这个错误通常会导致程序无法正常运行&#xff0c;给用户带来困扰。本文将介绍找不到concrt140.dll无法继续执行代码的8个方法&#xff0c;同时探讨concrt140.dll丢…

LinuxBasicsForHackers笔记 -- 文件系统和存储设备管理

设备目录/dev Linux 有一个特殊的目录&#xff0c;其中包含代表每个连接设备的文件&#xff1a;相应命名的 /dev 目录。 /dev中有很多设备列表。 特别令人感兴趣的是设备 sda1、sda2、sda3、sdb 和 sdb1&#xff0c;它们通常是硬盘驱动器及其分区以及 USB 闪存驱动器及其分区…

理解基于 Hadoop 生态的大数据技术架构

转眼间&#xff0c;一年又悄然而逝&#xff0c;时光荏苒&#xff0c;岁月如梭。当回首这段光阴&#xff0c;不禁感叹时间的匆匆&#xff0c;仿佛只是一个眨眼的瞬间&#xff0c;一年的旅程已成为过去&#xff0c;而如今又到了画饼的时刻了 &#xff01; 基于 Hadoop 生态的大数…

固态硬盘SSD

目录 1.2 组成1.3 读写性能特性1.4 与机械硬盘相比的特点1.5 磨损均衡技术 \quad \quad SSD基于闪存技术Flash Memory, 属于电可擦除ROM, 即EEPROM \quad 1.2 组成 \quad \quad \quad 系统对固态硬盘的读写是以页为单位的 固态硬盘里的块相当于机械硬盘里的磁道 固态硬盘里的页…

Redis基础系列-持久化

Redis基础系列-持久化 文章目录 Redis基础系列-持久化1. 什么是持久化2. 为什么要持久化3. 持久化的两种方式3.1 持久化方式1&#xff1a;RDB(redis默认持久化方式)3.11 配置步骤-自动触发3.12 配置步骤-手动触发3.12 优点3.13 缺点3.14 检查和修复RDB快照文件3.15 哪些情况会触…

ubuntu22.04 安装cuda

CUDA&#xff08;Compute Unified Device Architecture&#xff09;是由 NVIDIA 开发的一种并行计算平台和编程模型。它允许开发者利用 NVIDIA 的 GPU&#xff08;图形处理单元&#xff09;进行高效的计算处理。CUDA 通过提供一系列的 C、C 和 Fortran 扩展&#xff0c;使得开发…

我的NPI项目之Android电源系列 -- 关于剩余充满时间的问题(一)

我的新项目是基于高通最新的5G平台&#xff0c;但是由于还没有拿到EVT。所以&#xff0c;就在目旧的平台和OS上进行学习。遇到第一个问题就是插上type-c之后&#xff0c;充满剩余时间异常的问题。 问题描述&#xff0c;在充电过程中&#xff0c;显示充满时间为“0 min left unt…

9.基于SpringBoot3+I18N实现国际化

1. 新建资源文件 在resources目录下新建目录i18n, 然后 新建messages_en.properties文件 user.login.erroraccount or password error&#xff01;新建messages_zh_CN.properties文件 user.login.error帐户或密码错误&#xff01;2. 新建LocaleConfig.java文件 Configurati…

2004-2021年上市公司环境规制强度相关数据

2004-2021年上市公司环境规制强度相关数据 1、时间&#xff1a;2004-2021年 2、指标&#xff1a;年份、股票代码、股票简称、行业名称、行业代码、省份、城市、区县、行政区划代码、城市代码、区县代码、首次上市年份、上市状态、所属省份-工业增加值_亿元、所属省份-治理废气…

AVFormatContext编解码层:理论与实战

文章目录 前言一、FFmpeg 解码流程二、FFmpeg 转码流程三、编解码 API 详解1、解码 API 使用详解2、编码 API 使用详解 四、编码案例实战1、示例源码2、运行结果 五、解码案例实战1、示例源码2、运行结果 前言 AVFormatContext 是一个贯穿始终的数据结构&#xff0c;很多函数都…

基于HSV空间色彩的图像分割方法(含python代码实现)

文章目录 1. 介绍2. HSV颜色空间3. python实现HSV图像分割3.1. 代码实现3.2. 运行结果 1. 介绍 HSV颜色系统简介&#xff1a; HSV 即使用色相&#xff08;Hue&#xff09;、饱和度&#xff08;Saturation&#xff09;、明度&#xff08;Value&#xff09;来表示色彩的一种方式…

HttpComponents: 领域对象的设计

1. HTTP协议 1.1 HTTP请求 HTTP请求由请求头、请求体两部分组成&#xff0c;请求头又分为请求行(request line)和普通的请求头组成。通过浏览器的开发者工具&#xff0c;我们能查看请求和响应的详情。 下面是一个HTTP请求发送的完整内容。 POST https://track.abc.com/v4/tr…

根据对数器找规律、根据数据量猜题目解法

题目一 小虎去买苹果&#xff0c;商店只提供两种类型的塑料袋&#xff0c;每种类型都有任意数量。1&#xff09;能装下6个苹果的袋子2&#xff09;能装下8个苹果的袋子小虎可以自由使用两种袋子来装苹果&#xff0c;但是小虎有强迫症&#xff0c;他要求自己使用的袋子数量必须…

WordCount 源码解析 Mapper,Reducer,Driver

创建包 com.nefu.mapreduce.wordcount &#xff0c;开始编写 Mapper &#xff0c; Reducer &#xff0c; Driver 用户编写的程序分成三个部分&#xff1a; Mapper 、 Reducer 和 Driver 。 &#xff08; 1 &#xff09; Mapper 阶段 ➢ 用户自定义的 Mapper 要继承自己的父…

《师兄啊师兄》第二季确认定档!海神扬名,稳健回归!

近日&#xff0c;《师兄啊师兄》第二季的定档海报和PV终于发布&#xff0c;确认将于12月14日上午10点强势回归&#xff01;这部备受瞩目的国漫作品自第一季播出以来&#xff0c;便以其独特的剧情设定和唯美的画风&#xff0c;赢得了广大观众的喜爱。如今&#xff0c;动画第二季…

第一课【习题】给应用添加通知和提醒

构造进度条模板通知&#xff0c;name字段当前需要固定配置为downloadTemplate。 给通知设置分发时间&#xff0c;需要设置showDeliveryTime为false。 OpenHarmony提供后台代理提醒功能&#xff0c;在应用退居后台或退出后&#xff0c;计时和提醒通知功能被系统后台代理接管…

Qt 5.15.2 三维显示功能

Qt 5.15.2 三维显示功能 三维显示效果&#xff1a; .pro项目文件 QT core gui opengl 3dcore 3drender 3dinput 3dextrasgreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c17# You can make your code fail to compile if it uses deprecated APIs. # In ord…

2023年法国经销商Solu-Watt来访安科瑞-安科瑞 蒋静

2023年4月10日上午9点&#xff0c;法国Solu-Watt公司Matthieu先生一行到安科瑞考察参观工厂的智能化出入库工作站、柔性化仪表生产车间及实验室。自1992年以来&#xff0c;Solu-Watt在电气设备市场中不断发展。能够提供量身定制的安装有线电气解决方案&#xff08;电气柜、接线…

如何用Qt配置git项目并上传Gitee

1.进入到Qt项目文件夹内&#xff0c;打开 “Git Bash Here” 2.初始化&#xff0c;在“Git Bash Here”中输入 git init 3.加入所有文件&#xff0c;在“Git Bash Here”中输入 git add . (需要注意&#xff0c;git add 后面还有一个点) 4.添加备注&#xff0c;git com…

STL源码剖析笔记——哈希表、unordered_set、unordered_map、unordered_mutiset、unordered_mutimap

系列文章目录 STL源码剖析笔记——迭代器 STL源码剖析笔记——vector STL源码剖析笔记——list STL源码剖析笔记——deque、stack&#xff0c;queue STL源码剖析笔记——Binary Heap、priority_queue STL源码剖析笔记——AVL-tree、RB-tree、set、map、mutiset、mutimap STL源…