- プログラミング言語 Scala 10冊目
904 :デフォルトの名無しさん[]:2015/04/04(土) 15:42:05.88 ID:4YoGdZdr - >>899
データを作ってそこからデータを取り出したい時に使える switchにそういう機能はない sealed trait Tree[+A] case class Leaf[A](a:A) extends Tree[A] case class Branch[A](l:Tree[A],r:Tree[A]) extends Tree[A] val t = Branch(Leaf(3),Leaf(3)) val k = t match { case Branch(l,r) => l } これでleftの葉を取れる でleafが来た時の分岐を忘れてるけどその時は警告を出してくれる
|
- プログラミング言語 Scala 10冊目
905 :デフォルトの名無しさん[]:2015/04/04(土) 15:45:57.26 ID:4YoGdZdr - 後はList[Optin[A]]のデータを取り出したい時とか
case Some(x)::_=> x 逆にOption[List[A]]のデータを取り出したい時とか case Some(x::_) => x とか 型がネストしてて色々複雑な時も便利 漏れがあったら教えてくれるしね
|
- プログラミング言語 Scala 10冊目
906 :デフォルトの名無しさん[sage]:2015/04/04(土) 15:54:56.78 ID:4YoGdZdr - >>903が言ってるようにhaskellはmatch case文の糖衣構文がいっぱいあるから
haskellの方がより便利なんだけどね 関数定義に使えるし length::[a] -> Int length (x:[]) = 1 length (x:xs) = 1 + length xs
|