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.pswp.cn/news/209750.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/209750.shtml
英文地址,請注明出處:http://en.pswp.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…