scala 語法(一)

来源:https://www.cnblogs.com/CYRgrowing1215/archive/2018/08/23/9525910.html
-Advertisement-
Play Games

1)基本語法 變數:val var(可變變數); 數據類型:Byte,Char,Int,Short,Long,String(字元),Float,Double,Boolean(true,flase); 列子: val a = 3; or val a:Int = 3;//不可變,不能重新賦值 var b ...


(1)基本語法

變數

val var(可變變數);

數據類型

Byte,Char,Int,Short,Long,String(字元),Float,Double,Boolean(true,flase)。

列子:

val a = 3;  or  val a:Int = 3*//不可變,不能重新賦值
var b = 4.33; or var b:Double = 4.33 *//可變, 可賦值b = 3.9999;

字面量 :

5 + 6 ; == (5).+(6)//scala是純面向對象語言,+為方法。3 max 5//(基本數據類型福包裝類包含更多運算方法)

自增自減(不能使用a++,a--):

需使用a+=1,a-=1等等

創建Range:

1 to 5 *//Range(1,2,3,4,5) == 1.to(5)
1 until 5*//Range(1,2,3,4)
1 to 10 by 2*//以2為間隔生成Range。
0.5f to 5.9f by 0.3f

輸入輸出

輸入:(import scala.io.StdIn).readInt,readDouble,......
var i = readInt()*//輸入整型即可
輸出 print,println(輸出換行),printf(格式化輸出)
println(a), pirntf("output is %d,input is %.2f",a,b)

讀寫數據

寫(import java.io.PrintWriter)

val out = new PrintWrite("path/out.txt");
for( i <- 1 to 5) out.println(i)//寫入文件out.txt
out.close

讀取(import scala.io.Source)

val readfile = Source.fromFile("out.txt")
val lines = readfile.getLines//返回結果lines為迭代器
for(line<- lines) println(line)

異常處理

例子:

import java.io.FileReader
import java.io.FileNotFoundException
import java.io.IOException
try{
    val f = new FileReader("path/out.txt")
 }
    catch{
    case ex: FileNotFoundException =>
                print("file not found:)
    case ex:IOException =>
                print("io error")
}   finally{
    file.close()
}

控制語句(if,while,for)

val x=3 
if(x>0){ ...} else if(x=3){...} else{...}*//if語句可以賦值給變數 val a = if(x=0) 1 else 0
where(x>0){ x-=1;printf(...)}
do{x+=1 println(i)}where(x<3)

for(i<- 1 to 5) println(i) 
for(i<-1 to 5 if i%2==0) println(i)
fro(i<-1 to 5 if i%2!=0;j<-1 to 10 if j!=i) println(i*j)*//多個生成器+守衛(if)
val r = for(i<- 1 to 5 if i%2==0) yield {println(i);i} *//將for生成器生成的所有值收入集合r( Vector(2,4))

(2) 數據結構(容器collection)

*//import scala.collection,scala.collection.mutable(可變),scala.collection.immutable(不可變)預設

列表(List)

val strList = List("me","you","our")* //不可變列表 方法:head,tail
val otherList = "they"::strList
val List1 = 1::2::3::Nil == List(1,2,3)

集合(Set) 不重覆元素

var myset = Set("hadop","spark") *//var可變,庫為不可變庫
myset+="Scala" *//添加元素
*//導入可變包
import scala.collection.mutable.Set
val mySet = Set("a","b")*//val不可變,但Set可變
mySet+="c"  

映射(map)

val mymap = Map("a"->1,"b"->2)*//鍵值對,鍵是唯一的,值不唯一
print(mymap("a"))*//索引
val c = if (mymap.contain("a")) mymap("a") else 0 *//contain判斷鍵是否存在
*//可變map (import scala.collection.mutable.Map)
mymap("a") = 3* //更新
mymap("c")= 4 *//添加新元素
mymap+=("d"->5,"e"->6) *//add
for((key,value)<-mymap) println(key,value)  or  for(key<-mymap.keys)  print(key)   or   mymap.values(生成迭代器)

迭代器(Iteration)

val iter = Iteration(1,2,3,4) 
while(iter.hasNext) { println(iter.next)  } or for(elem<-iter) { printn(iter.next)}

方法:grouped,sliding返回迭代器

val myList = List(1,2,3,4,5)
val a = mylist grouped 3 //按照3分為兩組,返回迭代器,a.next=List(1,2,3) a.next = List(4,5)
val b = mylist sliding 3 //3個數滑動 b.next = List(1,2,3) .next = (2,3,4)....

數組(Array)*//(變長數組import scala.collection.mutable.ArrayBuffer)

val myarray = new Array[Int](3)  or val myarray = new Array(2,3,4)
myarray(0) = 1 myarray(1)=2 myarray(2) = 3
for(elem<-0 to 2) { println(myarray(elem)) }

多維數組 :val myarray = Array.ofDim[Int](3,4)
可變數組 :val myarray = ArrayBuffer(10,20,30) myarray+=40 *//方法 insert ,remove

元組(tuple)

//數據類型可以不同
val mytuple = Tuple("a",1,3) println(mytuple._1) println(mytuple._2)
//索引


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 作者:暴王 個人博客:http://www.boydwang.com/2017/12/net core in memory cache/ 這兩天在看.net core的in memory cache,這裡記錄一下用法,主要涉及MemoryCache的Get/Set/Expire/Flush。 首先我 ...
  • All在項目文件裡面,這一行代表引用包,可是有三個子項目,需要說一下:IncludeAssetsExcludeAssetsPrivateAssets這三個是什麼意思?中文翻譯,Assets是資產,反正無法理解說的是什麼鬼。一開始我以為它可以定製引用庫裡面那個類,搞了好久才發覺這是一個部署選項。可以取... ...
  • 筆者在使用Entity Framework中的Scaffolding機制自動創建拓展名為mdf的資料庫及表單時,遇到如下的錯誤: 首先回顧一下創建這個程式的步驟: 1、創建一個Console控制台應用程式,程式集名稱及命名空間為ConsoleApp; 2、使用程式包控制台管理器將Entity Fra ...
  • vscode是一個簡單的開發工具,啟動快,速度快。但是當前1.26版本對多項目支持好像有點問題。命令行有個dotnet sln,但是只能添加新項目,卻沒有創建解決方案的命令。如果強行添加他會提示沒有解決方案文件,莫名其妙!當然可以添加文件夾的方式,在一個項目中看到另一個項目的文件結構,但是這無法等同... ...
  • 突然想起delegate委托是支持+= 和-=操作的,然後研究一下究竟這個是怎麼做到的,好模仿一下。一開始以為是+=的運算符重載,但是在類庫參考中並沒有這個運算符重載,只有!= 和==運算符重載。有點納悶,最終發現,原來+=這些直接就是語法層面的實現,只是針對delegate才有的福利,所以也不存在... ...
  • 1. 安裝 Homebrew2. brew doctor 確認 brew 在正常工作3. brew update 更新包4. brew install mysql 安裝 MySQL​```==> Downloading https://homebrew.bintray.com/bottles/mys... ...
  • 直方圖是表上某個欄位在按照一定百分比和規律採樣後的數據分佈的一種描述,最重要的作用之一就是根據查詢條件,預估符合條件的數據量,為sql執行計劃的生成提供重要的依據在MySQL 8.0之前的版本中,MySQL僅有一個簡單的統計信息卻沒有直方圖,沒有直方圖的統計信息可以說是沒有任何意義的。MySQL 8 ...
  • 1.導入 導入實例 說明: 第一行就是導入文件; 第二行參看語法就會發現有兩個詞:replace 和 ignore 。replace和ignore關鍵詞控制對現有的唯一鍵記錄的重覆的處理。如果你指定replace,新行將代替有相同的唯一鍵值的現有行。如果你指定ignore,跳過有唯一鍵的現有行的重覆 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...