Clojure その9 case
今回は
case を使ってみましょう
ClojureDocs - clojure.core/case
(defn -main [member] (case member "高垣彩陽" (println "ピンク") "豊崎愛生" (println "緑") "戸松遥" (println "オレンジ") "寿美菜子" (println "紫")))
$ lein run 高垣彩陽 ピンク
ここで気になるのは、もしマッチする部分がない場合はどうなるかということ
$ lein run 花澤香菜 Exception in thread "main" java.lang.IllegalArgumentException: No matching clause: 花澤香菜 at hello.core$_main.invoke(core.clj:11) at clojure.lang.Var.invoke(Var.java:415) at user$eval5$fn__7.invoke(form-init2274211252778516822.clj:1) at user$eval5.invoke(form-init2274211252778516822.clj:1) at clojure.lang.Compiler.eval(Compiler.java:6619) at clojure.lang.Compiler.eval(Compiler.java:6609) at clojure.lang.Compiler.load(Compiler.java:7064) at clojure.lang.Compiler.loadFile(Compiler.java:7020) at clojure.main$load_script.invoke(main.clj:294) at clojure.main$init_opt.invoke(main.clj:299) at clojure.main$initialize.invoke(main.clj:327) at clojure.main$null_opt.invoke(main.clj:362) at clojure.main$main.doInvoke(main.clj:440) at clojure.lang.RestFn.invoke(RestFn.java:421) at clojure.lang.Var.invoke(Var.java:419) at clojure.lang.AFn.applyToHelper(AFn.java:163) at clojure.lang.Var.applyTo(Var.java:532) at clojure.main.main(main.java:37)
花澤香菜さんはエラーになってしまいます
これでは困ってしまうので、以下のように書き換えます
(defn -main [member] (case member "高垣彩陽" (println "ピンク") "豊崎愛生" (println "緑") "戸松遥" (println "オレンジ") "寿美菜子" (println "紫") "default"))
こうすればエラーは出なくなります
マッチしないものでもなんかしたい!、と
(defn -main [member] (case member "高垣彩陽" (println "ピンク") "豊崎愛生" (println "緑") "戸松遥" (println "オレンジ") "寿美菜子" (println "紫") "default" (println "default")))
って書くとエラーになります(;´д`)トホホ…
どうするんだろう・・・
ちなみにScalaでは以下のように書けます
object Main { def main(args: Array[String]) = { args(0) match { case "高垣彩陽" => println("ピンク") case "豊崎愛生" => println("緑") case "戸松遥" => println("オレンジ") case "寿美菜子" => println("紫") case _ => println("スフィア以外です") } } }
$ scala Main.scala 高垣彩陽 $ ピンク $ scala Main.scala 花澤香菜 $ スフィア以外です
- 作者: Martin Odersky,Lex Spoon,Bill Venners,羽生田栄一,水島宏太,長尾高弘
- 出版社/メーカー: インプレスジャパン
- 発売日: 2011/09/27
- メディア: 単行本(ソフトカバー)
- 購入: 12人 クリック: 235回
- この商品を含むブログ (44件) を見る
- 作者: Stuart Halloway and Aaron Bedra,川合史朗
- 出版社/メーカー: オーム社
- 発売日: 2013/04/26
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (9件) を見る