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

標籤

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 所提供的說明. 

補充說明 :

沒有留言:

張貼留言

網誌存檔