2016年4月12日 星期二

[Scala 小學堂] Scala Gossic : 起步走 - 資料、變數、操作 (主控台輸入輸出)

轉載自 這裡 
前言 : 
Scala 是一個可直譯、編譯、靜態、運行於 JVM 之上、可與 Java 互操作、融合物件導向編程特性與函式編程風格的程式語言. 從一些簡單的語法開始,了解 Scala 的許多特性,所以就算是起步走,東西也夠多了. 簡單的小程式可以使用 scala 指令,編譯的事就交給 scalac,編譯想快點就用 fsc. (Scala 官網), 所有的東西都是物件,所有的操作都是方法. 

主控台輸入輸出 : 如果你要在執行程式時,一併給定執行引數,則可以在程式中,使用 args 來取得這些引數,args 參考至 Array[String] 實例,收集了你所給定的引數,args(0) 代表第一個引數,args(1) 代表第二個引數....依此類推,注意存取索引是用 () 而不是 []. 你也可以使用scala.Console 中所定義的方法來取得使用者的輸入或進行輸出,例如 : 
- Console.scala 代碼 :
  1. Console.print("Please input integer: ")  
  2. val x = Console.readInt  
  3. Console.print("Please input string: ")  
  4. val y = Console.readLine  
  5. Console.println("Integer: "+x)  
  6. Console.println("String: "+y);  

執行結果 : 
# scala Console.scala
Please input integer: 18
Please input string: John
Integer: 18
String: John

在 scala.Console 物件中定義了許多關於主控台輸入輸出的方法,print() 方法會輸出指定的文字而不換行,println() 方法則輸出後換行,至於輸入的部份,也有許多針對不同資料型態的 readXXX 方法. 事實上,上面的範例程式,你也可以寫成 : 
- Console2.scals 代碼 :
  1. print("Input Integer: ")  
  2. val x = readInt  
  3. print("Input String: ")  
  4. val y = readLine  
  5. println("Integer > "+x)  
  6. println("String > "+y);  

執行結果 : 
# scala Console2.scala
Input Integer: 16
Input String: John
Integer > 16
String > John

可以這麼縮寫的原因在於,在 Scala 中會自動匯入(importscala.Predef 物件,範例中的 print()println()readInt 等方法,其實就是定義在 Predef 中,而 print()println()readInt 等方法定義為呼叫 scala.Console 中對應的方法(Scala會自動匯入的有java.langscala 套件與 scala.Predef f物件).你可以使用 printf()呼叫了Console.printf())來格式化主控台輸出,例如 : 
// 輸出 19 的十進位表示
scala> printf("%d%n", 19)
19
// 輸出 19 的八進位表示
scala> printf("%o%n", 19)
23
// 輸出 19 的十六進位表示
scala> printf("%x%n", 19)
13

'%d' 表示將指定的數值以 十進位表示,'%o' 是八進 位表示,而 '%x' 是十六進位表示,'%n' 是 指輸出平台特定的換行字元,如果是在 Windows 下實際上會置換為 '/r/n',如果是 Linux下則會置換為 '/n'. 下表簡單列出了一些常用的轉換符號 : 

 
可以在輸出浮點數時指定精度,例如 : 
scala> printf("example: %.2f%n", 19.234)
example: 19.23

執行結果會輸出 example:19.23。也可以指定輸出時,至少要預留的字元寬度,例如 : 
scala> printf("example: %6.2f%n", 19.234)
example: 19.23

由於預留了 6 個字元寬度,不足的部份要由空白字元補上,所以執行結果會輸出如下(19.23 只佔五個字元,所以補上一個空白在前端),結果是顯示 example: 19.23。以上只是簡短的列出一些常用的輸出轉換符號,事實上,詳細的描述可以參考 java.util.Formatter 所提供的說明. 

補充說明 :

沒有留言:

張貼留言

[Git 文章收集] Differences between git merge and git rebase

Source From  Here Preface Merging and rebasing are the two most popular way to applying changes from one branch into another one. They bot...