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,一经查实,立即删除!

相关文章

ubuntu server 20.04 备份和恢复 系统 LTS

ubuntu server 20.04 备份和恢复 系统 LTS tar命令系统备份与恢复&#xff08;还原or新装&#xff09; 备份系统 cd / su root tar cvpzf backup.tgz --exclude/tmp --exclude/run --exclude/dev --exclude/snap --exclude/proc --exclude/lostfound --exclude/backup.tgz …

启动游戏出现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 哪些情况会触…

每天一个Linux命令 -- (7)more命令

欢迎阅读《每天一个Linux命令》系列&#xff01;在本篇文章中&#xff0c;将介绍Linux系统下的more命令&#xff0c;它用于逐屏显示文件的内容。 概念 more命令是Linux系统下的文件逐屏显示命令&#xff0c;用于逐屏显示文件的内容。 命令操作 more命令的语法如下&#xff1…

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;年份、股票代码、股票简称、行业名称、行业代码、省份、城市、区县、行政区划代码、城市代码、区县代码、首次上市年份、上市状态、所属省份-工业增加值_亿元、所属省份-治理废气…

Flink流批一体计算(24):Flink SQL之mysql维表实时关联

目录 1.维表 2.数据准备 创建源数据 创建维度表 创建Sink表 3.配置任务 Flink SQL创建kafka源表 Flink SQL创建MySQL维表 Flink SQL创建MySQL结果表 编写计算任务 核验数据 1.维表 目前在实时计算的场景中&#xff0c;大多数都使用过MySQL、Hbase、redis作为维表引擎…

PTA:计算总分

题干 请编写一个函数sum&#xff0c;函数的功能是&#xff1a;计算一个由结构体表示的包含多门课程成绩组成的学生的总成绩。 函数接口定义&#xff1a; double sumScore(struct student stu); 其中 stu是用户传入的参数。函数须返回学生的总成绩。 裁判测试程序样例&#x…

【华为数据之道学习笔记】3-7 报告数据治理

报告数据是指对数据进行处理加工后&#xff0c;用作业务决策依据的数据。它用于支持报告和报表的生成。 用于报告和报表的数据可以分为如下几种。 用于报表项数据生成的事实表、指标数据、维度。 用于报表项统计和计算的统计函数、趋势函数及报告规则。 用于报表和报告展示的…

AVFormatContext编解码层:理论与实战

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

前后端分离项目跨域请求

一、前端vue项目 在项目中创建request.js文件&#xff0c;添加以下内容 import axios from "axios"; const api axios.create({ //这里配置的是后端服务提供的接口baseURL: "http://localhost:8080/web-demo",timeout: 1000} ); export default api; …

基于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;他要求自己使用的袋子数量必须…

python门户网站文件爬取并显示

广西南宁政府门面网站 import requests import os import io import numpy as np from concurrent.futures import ThreadPoolExecutor from bs4 import BeautifulSoup import time import pdfplumber import pandas as pd from docx import Document import docx import win32…