普段使わないので使おうと思った時に思い出せないアレ。
1. 行末に // print
+ タブ
例: for式ってどう展開されるんだったかな?
scala> for (i <- Option(1)) yield i // print
scala.Option.apply[Int](1).map[Int](((i: Int) => i)) // : Option[Int]
// print
の後にタブを押すと2行目が表示される。この場合の for 式は map()
に展開されることが分かる。
//print
+ タブ は代入文には使えないようだ。 val x = 1 + 1 // print
と入力してタブを押しても何も表示されない。他にも使えないパターンがあるかもしれない。
2. 行末に // show
で評価(Enter)
こちらは評価する前に desugar された状態のプログラムが表示される。
周りの object も表示されるのが少し煩い。
scala> for (i <- Option(1)) yield i // show
object $read extends scala.AnyRef {
def <init>() = {
super.<init>;
()
};
object $iw extends scala.AnyRef {
def <init>() = {
super.<init>;
()
};
object $iw extends scala.AnyRef {
def <init>() = {
super.<init>;
()
};
val res3 = Option(1).map(((i) => i))
}
}
}
res3: Option[Int] = Some(1)
// print
+ タブと違い代入文でもいけるようだ。
scala> val x = 1 + 1 // show
object $read extends scala.AnyRef {
def <init>() = {
super.<init>;
()
};
object $iw extends scala.AnyRef {
def <init>() = {
super.<init>;
()
};
object $iw extends scala.AnyRef {
def <init>() = {
super.<init>;
()
};
val x = 1.+(1)
}
}
}
x: Int = 2