basyura's blog

あしたになったらほんきだす。

メソッド定義と for 文

戻り値まで書く

def test1(list: List[String]) : List[String] = {
  for (l <- list ; if l > "2") yield { "@" + l }
}

戻り値を省略

def test3(list: List[String]) = {
  for (l <- list ; if l > "2") yield { "@" + l }
}

中括弧も省略

def test2(list: List[String]) = 
  for (l <- list ; if l > "2") yield { "@" + l }

for 文で判定式を複数行書きたい場合

def test4(list: List[String]) = 
  for {
    l <- list
    val s = l
    if (s > "2")
  } yield { "@" + l }

戻り値をゴニョゴニョ編集したい場合

def test5(list: List[String]) = 
  for (l <- list ; if l > "2") 
    yield {
      var s = "@" + l
      s += "@"
      s
    }

こう見ると、python のインデントもいいかもと思えてしまうから不思議