ViewImagesInFeed.scalaを読んでみた

ちょっと書いてみようと思っているものの為に、Scala勉強会@東北みんなのコードから、ymnkさんのViewImagesInFeed.scalaを読んでみた。


で、最初に一言いっときます。
Scala勉強会@東北すばらしいです。というか、ymnkさんとか武田さんはじめ皆がしっかり記録を残しておいてくれてて、本当に役に立ちました。
parttyとかskypeustream等使ってるのですが、記録されているので、後から振り返るのにちょうどいいです。
(#もっとも、勉強会時には殆ど理解できてなかったという事も再認識して、結構凹みましたが...)
今回の場合は、写経して、挙動をみてから、skypeのログも辿りつつコードを読んでいきましたが、素で読んでいくよりスムーズに行ったと思います。


本題。大まかに読めましたが、少し引っかかった所だけ。後、必要な所だけ読めればいいかと思って、一部スルーしました。


47行目this ! FEEDIMAGE
!を最初演算子かと思ったけど、Rubyみたいに+や-もメソッドだったなと思って確認。メソッドでした。skypeのログにも書いてありました。
Sends msg to this actor (asynchronous) なので、アクターにFEEDIMAGEを送ると。


35行目の\

 val xml = XML.load(new URL(url).openStream)
    (xml \ "entry" \ "media" \ "thumbnail" \ "url").foldLeft(images){
      (i, u) => i += u.text; i
    }

xml.\("entry").\("media").\("thumbnail").\("url")
という意味だと。これまたskypeのログに記録されてました。素晴らしい!
この\はscala.xml.NodeSeqクラスにあるメソッド。
XML.load()の戻り値がscala.xml.Elemで、\は、inherited from NodeSeqだよと。
scala.xml.Elem extends Nodeで、scala.xml.Node extends NodeSeqっと。