控制結構與函式練習(一)
今天繼續學習Scala,練手。
1. 一個數字如果是正數,則它的signum為1,如果為負數,則它的signum為-1,如果是0,則它的signum為0。編寫一個函式計算該值。
Ans:
def sig_num(x: Double) = {
if (x.signum == 1) x + "是正數"
else if (x.signum == -1) x + "是負數"
else "這個數是0"
}
println(sig_num(0))
println(sig_num(3))
println(sig_num(-2.8))
結果:
D:\dev\scala>scala sig_num.scala
這個數是0
3.0是正數
-2.8是負數
Scala沒有三元運算子“?:”,沒有switch語句,Scala的“if/else”語句很強大,最大特點是有值,就是“if/else”後面表示式的值。
2. 一個空的塊表示式{}的值是什麼?型別是什麼?
Ans:
值為(),型別為Unit。Unit相當於Java的void,()是個值,表示“無有用值”。
結果:
scala> val b = {}
b: Unit = ()
3. Scala中,何種情況下,賦值語句x = y = 1是合法的?
Ans:
在Scala中,賦值語句本身的值是Unit型別的,所以,在以下情況下x = y = 1才是合法的(x是相應的Unit型別),同時,x和y必須是var宣告。
scala> var x= ()
x: Unit = ()
scala> var y = 1
y: Int = 1
scala> x = y = 1
x: Unit = ()
4. 針對下列Java迴圈寫一個Scala版:
for (int i = 10; i >= 0; i--) System.out.println(i);
Ans:
scala> for (i <- 0 to 10) println(10 - i)
scala> for (i <- 0 to 10; from = 10 - i) println(from)
以上兩種方法都可以。
結果:
10
9
8
7
6
5
4
3
2
1
0
5. 編寫一個過程countdown(n: Int),列印從n到0的數字
Ans:
def countdown(n: Int) {
for (i <- 0 to n; from = n - i) print(from + " ")
}
結果:
scala> countdown(6)
6 5 4 3 2 1 0
相關文章
- 控制結構與函式練習(二)函式
- 控制結構與函式練習(三)函式
- Python3控制結構與函式Python函式
- oracle的case函式和case控制結構Oracle函式
- mysql函式練習題MySql函式
- 建構函式與解構函式函式
- Python函式練習題Python函式
- 函式指標練習題函式指標
- Go語言流程控制結構和函式解析Go函式
- mysql練習 —— 關於一些函式的使用MySql函式
- MATLAB巢狀函式練習Matlab巢狀函式
- matlab每日練習 lenght函式Matlab函式
- 2. 流程控制 與 函式 |《 刻意學習 Golang 》函式Golang
- PHP 手冊 (類與物件) 學習筆記五:建構函式和解構函式PHP物件筆記函式
- PHP筆記:建構函式與解構函式PHP筆記函式
- 第三章 函式與程式結構函式
- [C練習]實現memcpy原型函式memcpy原型函式
- 練習 讀取函式裡的值函式
- 關於建構函式與解構函式的分享函式
- 重構與模式系列(一)簡化函式模式函式
- JS資料結構-棧-練習JS資料結構
- 資料結構專題練習資料結構
- MySQL函式學習(一)-----字串函式MySql函式字串
- 建構函式與普通函式的區別函式
- [C練習]my_atoi函式實現函式
- Objective-C學習筆記---建構函式和解構函式Object筆記函式
- 高階函式與標籤函式,解構賦值與物件字面量的簡化學習函式賦值物件
- 建構函式與解構函式是否可以丟擲異常函式
- if-else擴充套件結構練習套件
- Linux字元驅動程式的基本結構與函式Linux字元函式
- C++語言之結構體、類、建構函式、拷貝建構函式C++結構體函式
- JS 建構函式與類JS函式
- python3 的 round 函式的 練習Python函式
- python中list方法與函式的學習總結Python函式
- fstat函式及struct stat結構函式Struct
- 預設建構函式學習函式
- 學習Scala 方法與函式函式
- 函式與極限 第一節 對映與函式函式