亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Scala怎么使用

發布時間:2021-12-08 09:46:03 來源:億速云 閱讀:165 作者:iii 欄目:大數據

本篇內容主要講解“Scala怎么使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Scala怎么使用”吧!

語法

scala語言,從詞法上就與Java語言不同。支持完全符號作為命名,而且被命名的東西,不受任何限制。可以是方法、函數、類、特質、對象、變量。剛開始接觸的時候,往往被這些符號搞暈,進而心生恐懼。那么scala語言為什么要支持這個特征呢?

  1. scala語言是完全面向對象的,不像Java語言存在那種primitive的東西

  2. scala語言沒有運算符的概念,這些運算符都是對象(類)的方法

  3. 為了更好的支持領域專用語言(dsl),配合語言其他特征

關鍵字

當java程序員初步接觸scala時,往往覺得比較親切,我覺得主要有以下原因

  1. 同樣運行在JVM上

  2. scala富語義,java相對貧語義;scala可以方便使用Java生態的任何框架、組件
    熟悉的關鍵字

熟悉是表面的假象,掩蓋著本質的不同

  1. 相同的關鍵字,大多名同意不同,用法不同,如import

  2. scala語言的關鍵字往往多義,有很多常見的關鍵字是多義的。如_,在不同的詞法上下文當中,會有如下含義:代表不同位置的參數、全部、除去、忽略 等等 。其他如var、va、 箭頭符號 、with、class

  3. 組合關鍵字:case class、 this.type ,有些時候站在Java語言的角度,甚至是兩個矛盾的關鍵字進行組合。如 abstract overwrite 、final treat

表達式

表達方式肯定是不能與關鍵字這樣的概念、特征相提并論、平起平坐的
但是也是阻礙因素之一,大多語言不支持
在特定的詞法和語法上下文兒的前提下,前綴表達、后綴表達、中綴表達

  1. 前綴表達:-1,而且這種表達方式可以讓開發人員使用,如你可以做到!Point(x,y)

  2. 后綴表達 : 以冒號(結尾的方法),如fold中的 /: :\。再比如buildSequenceFlow(maybeEnd.getOrElse(begin),rightEnd) +: rightEnd +: flowElements

在這里最要命的是中綴表達,當時看到這個語言特征的時候,充滿了很多的不理解。不理解這個語言支持這個特征到底是要干嘛?

  • 一個參數的方法,一切符號皆方法。

  • 兩個構造參數的case class

  • 兩個型參數的高階Kind

動詞名詞

在Java語言當中,動詞和名詞是涇渭分明的,動詞就是方法,可執行的東西。名詞就是數據被執行的東西
但是,scala語言中,除了函數是頭等公民以外,還有apply object。 這些都是可執行的名詞。
這樣就會有一種分不清流氓和警察的感覺,哪些是羊,哪些是放羊的? 甚至為一些東西進行命名的時候,都會發生困難。
再加上scala語言的其他特征,會感覺一片混沌。

函數式思想

scala語言是同時支持命令式的面向對象以及聲明式的函數式編程范式的,但鼓勵優先使用函數式的特征,如:val 不變的集合
函數式的可組和性,函數式的管理、推遲副作用是所謂的函數式的精髓
非常熟悉Java的命令式面向對象,設計模式了然于胸的朋友,在這里需要從頭開始,而你過去的辛苦積累沉淀的知識,很可能會成為你學習新東西的桎梏

強大的模式匹配

  • scala中的match讓你爽翻天 match 是數據處理的利器,極其方便,并且大量消除樣板式代碼

  • 但是這個名字并沒有完全表達出這個功能的全部含義,我理解這個名稱包含了三個功能:匹、配、抽

  • 但是由于Java虛擬機,自身類型擦除的限制,在一定程度上影響了模式匹配全部功能的完全發揮

  • 另外,模式匹配,不僅可以通過關鍵字match case進行體現。還可以在賦值語句中直接使用,并且與for關鍵字配合使用

隱式系統

scala語言比較特有的特征,只是簡簡單單的一個implicit關鍵字

  • 三個基本的語義,隱式值、隱式視圖、隱式類,隱式傳遞 隱式值與隱式視圖的組合

  • 隱式觸發條件,這些使得隱式既簡單又神秘

  • 隱式只是把基礎上編譯器的技術暴露給開發人員去使用,如


    • Java語言中的類型轉換


    • JavaScript語言中的:console.info(-“1” + 1) 、console.info(“1” + 1)

  • 單獨使用隱式,簡單而功能有限。與類型系統的結合, 類型系統對型的限制,隱式上下 - 文兒界和視圖界,帶有優先級的隱式域,相互增強

SBT

scala語言中的maven

秉承了scala語言的特點:上手難,上手后,愛不釋手

Scala 學習

  1. Scala 概述

主要說了下Scala語言的由來,環境的搭建,以及簡單的scala代碼底層對應*.class 文件反編譯后結構。

  1. Scala 變量

var,val,變量定義,Any,AnyRef,AnyVal,自動轉換,基本上根Java類似,不過有細節差別。

  1. 運算符跟 流程控制

算術運算,賦值運算,比較運算,邏輯運算,位運算,順序控制,分值控制,循環控制,scala中沒有break跟continue,scala不推薦用while跟do-while

  1. 函數式編程基礎 面向對象編程基礎

scala中函數跟方法的定義,過程,惰性函數,異常,訪問權限,BeanProperty, private[this],對象創建流程分析。

  1. 面向對象編程-中級(包,抽象,封裝,繼承,抽象類,匿名子類)

scala 中包存在的意義,靈活性使用跟Python一樣,包對象存在的意義跟底層。面向對象的幾個特征,抽象-封裝-繼承-多態。主構造器,輔助構造器, this,override,類構件的時候從左到右,調用函數時候從右到左。

  1. 面向對象編程-高級(伴生對象,trait,自身類型,implicit)

scala 中去除了static關鍵字,trait存在的意義,interface+ abstract,self=>,嵌套類,implicit 的使用細節。

  1. 數據結構-集合

scala.collection.mutable,scala.collection.immutable(默認)。Array,ArrayBuffer,Tuple,List,Queue,Map,Set,主要是如何增刪改查

  1. 集合操作-重點

map,flatMap,reduce,flod,scan,zip,iterator,stream,view,par,強大的match 模式匹配。

  1. 函數編程高級

偏函數 三種形式,高級函數,匿名函數 =>,參數推斷,閉包,柯里化,控制抽象

  1. 遞歸方式思考

Option 這個包裝類的存在意義,遞歸的一些概念引入已經尾遞歸優化。

  1. AKKA 網絡編程 Spark 注冊心跳

AKKA框架的引入,以及思想的理解,網絡編程基本知識點, Master跟Worker工作模式。

  1. 設計模式,泛型等概念

設計模式、泛型、上下界、視圖界定、上下文界定、協變逆變不變

WorkCount必會

lines.flatMap(.split(" ")).map((, 1)).groupBy((_._1)).map(x => (x._1, x.2.size)).toList.sortBy(._2))

  1. scala與數據結構

稀松數組,隊列,鏈表,棧,遞歸,排序,查找,哈希表,二叉樹,二叉排序樹,紅黑樹,平衡二叉樹等等
目的:熟悉Scala編程模式。

  1. scala知識點小練習

  2. 小demo
    Scala怎么使用

到此,相信大家對“Scala怎么使用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

汉源县| 龙井市| 墨脱县| 遵义县| 连南| 天门市| 长汀县| 新建县| 北安市| 永昌县| 雷山县| 镇平县| 家居| 渑池县| 大荔县| 新昌县| 陇川县| 同江市| 岑溪市| 民勤县| 精河县| 灯塔市| 乐清市| 大冶市| 微山县| 新兴县| 遂平县| 南昌市| 东丰县| 探索| 淳化县| 息烽县| 开平市| 河南省| 新安县| 霍邱县| 玉树县| 连州市| 车险| 隆昌县| 张家口市|