顯示具有 scala 標籤的文章。 顯示所有文章
顯示具有 scala 標籤的文章。 顯示所有文章

2016年7月19日 星期二

scala compiler -classpath with multiple JAR files

scala compiler  -classpath  with  multiple JAR files


1. To compile a scala file and include a Jar file, enter the following command line:

scala  -classpath  /home/user/jarFile.jar   scalaFile.scala


2. To compile a scala file and include multiple Jar file, enter the following command line:

In Linux OS:
scala  -classpath  "/absolute/path/jarFile1.jar:/absolute/path/jarFile2.jar"   scalaFile.scala

In Winsows OS:
scala  -classpath  "C:\absolute/path/jarFile1.jar;C:/absolute/path/jarFile2.jar"   scalaFile.scala






scala 多個jar包編譯 

1.scala 編譯時僅有引用一個jar包:

scala  -classpath  /home/user/jarFile.jar   scalaFile.scala

2. scala 編譯時僅有引用一個jar包:
在Windows底下是分號要注意,Linux則是冒號,也要注意分號跟冒號分隔前後不可以有空白,也要使用絕對路徑,例如:~/xxx/yyy/filejar.jar 是不可以的。

In Linux OS:
scala  -classpath  "/absolute/path/jarFile1.jar:/absolute/path/jarFile2.jar"   scalaFile.scala

In Winsows OS:
scala  -classpath  "C:\absolute/path/jarFile1.jar;C:/absolute/path/jarFile2.jar"   scalaFile.scala

2016年6月4日 星期六

Scala 錯誤: java.nio.charset.MalformedInputException: Input length = 1

Scala ERROR  java.nio.charset.MalformedInputException: Input length = 1



import scala.io.Source

object Test{
def main(args: Array[String] ){
val filename = "test.txt"
Source.fromFile("test.txt", "UTF-8").foreach{ 
               print 
               }
}
}


在執行上段程式碼的時候,遇到了 java.nio.charset.MalformedInputException: Input length = 1 的錯誤,官方解釋這個錯誤為:

MalformedInputException thrown when an input byte sequence is not legal for given charset, or an input character sequence is not a legal sixteen-bit Unicode sequence.


代表輸入時遇到不合法的字元,所以只要把輸入的字元編碼就可以了。
fromFile 方法有提供編碼的參數:

fromFile (name : java.lang.String, enc : java.lang.String) : Source
creates Source from file with given name, using given encoding, setting its description to filename.

所以改成:

object Test{
def main(args: Array[String] ){
val filename = "test.txt"
Source.fromFile("test.txt", "UTF-8").foreach{ 
               print 
             }
}
}


2016年5月31日 星期二

Scala 學習筆記:function literal

Scala 學習筆記:function literal 


   function literal直接拿去翻譯通常會翻做"功能字面",這個翻譯真的讓人無法理解,所以爬了許多文章後,function literal應該翻做這個"方法的名稱"。
例子1:
scala>  (a:Int, b:Int) => a + b

 這個function literal 就是  anonymous。也就是這個方法的名稱就是匿名方法。

例子2:

scala>  var factor = 3
scala>  val multiplier = (i:Int) => i * factor

這個function literal 就是 Closures。也就是這個方法的名稱就是閉包方法。這邊的閉包只是我看到最常見的講法,不是官方確定說法。

參考:
http://stackoverflow.com/questions/12615091/why-is-the-following-scala-function-called-a-closure
http://www.tutorialspoint.com/scala/scala_closures.htm