XMLをHTTP接続で取得する
import java.net.{URLConnection, URL} import scala.xml._ def main(args: Array[String]) = { val feed = getFeedElem(url); // 後はXMLの属性にアクセスして、似るなりやくなりする val items = feed\"item"; for(item <- items){ var summary = (item\"summary").text; } } //Java の API を利用 def getFeedElem(feed:String):Elem = { val url = new URL(feed) val conn = url.openConnection XML.load(conn.getInputStream) }
Mapのループ
aa,bb = list.items() // aaをつかってごにょごにょ // bbをつかってごにょごにょ
のような代替え?になる?
ループ1
import scala.collection.mutable.HashMap val countMap = new HashMap[Int, String] countMap += 1 -> "one" countMap += 2 -> "two" countMap += 3 -> "three" for (key <- countMap.keySet) println(key + ":" + countMap(key))
ループ2
val countMap = Map(1 -> "one", 2 -> "two", 3 -> "three") countMap.foreach(entry => println(entry._1 + ":" + entry._2))
ファイル入出力
ファイル出力の方法の一般的なのはなんだろうか?
ファイル入力
参考URL
そのまま。ただし、ファイルクローズ無し。
// file_read_scala.scala import scala.io.Source object FileReadScala { def main( args: Array[String] ) { // 「ソース」っていうのを作る val source = Source.fromFile( "test.txt" ) // ソースから出力 for( line <- source.getLines ) { println( line.stripLineEnd ) } } }
ファイル出力
これ一般的な方法を知りたい。以下のやり方が一般的?
参考URL
// ファイル出力用メソッド import java.io._ import scala.util.DynamicVariable object DisposableFile extends OutputStream { val out = new DynamicVariable[FileOutputStream](null) def openOut(path: String)(block: => Unit) { val out_ = new FileOutputStream(path) try { out.withValue(out_) { block } } finally { out_.close() // Console.println("closed") } } def write(b: Int) = out.value.write(b) override def write(b: Array[Byte]) = out.value.write(b) override def write(b: Array[Byte], off: Int, len: Int) = out.value.write(b, off, len) override def flush = out.value.flush } scala> import DisposableFile._ import DisposableFile._ scala> openOut("d2.txt") { | write("hello".getBytes) | }
型キャスト
参考URL
そのまま以下検索用に記載
オブジェクトを指定の型にキャストするには、Any#asInstanceOfを使います。 また、指定した型と互換性があるか評価するにはAny#isInstanceOfを使います。 var i = 10 var str = "aaa" // オブジェクトが指定した型と互換性があるか評価する。 println( i.isInstanceOf[String] ) // false println( i.isInstanceOf[Int] ) // true println( i.isInstanceOf[Any] ) // true println( str.isInstanceOf[String] ) // true println( str.isInstanceOf[Int] ) // false println( str.isInstanceOf[Any] ) // true // オブジェクトを指定の型にキャストする。 var any:Any = i println( i.asInstanceOf[Int] ) // これはエラー //println( i.asInstanceOf[String] ) // これはエラー