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のループ

参考URL
これらはpythonでいう、

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] ) // これはエラー