began.2012-06-03Clojureの条件分岐を覚えるClojureifとかwhenとかcaseとかいろいろあって、いつも迷うので1度しっかり見てみることにしました。代表的そうなものを、以下順に。if最も単純な条件分岐です。最初に条件式を書き、次に条件がtrueとなった場合の処理、その次にelseの処理を書きます。戻り値は、それぞれのケースで評価された値になります。if的なものはなさそうですね。その場合は、後述のcaseなどを使用します。あと、評価が逆になるif-notもあります。評価後の値に括弧が無いように、そのままでは複数の式を書くことはできません。その場合は、do特殊形式を入れる必要があります。True!if-letifとletの合わせ技のようです。if-letで評価した値がtrueと判定されるようなら、そのまま変数に束縛できるようですね。False条件がtrueにならなかった場合は、if同様にelseの値が返ります。whenifに似ていますが、elseがありません。後続の処理は暗黙的にdo特殊形式内で実行されることになります。よって、ifと異なり複数の式を書く際に、do特殊形式を付与する必要がありません。nil条件式がtrueにならなかった場合は、nilが返ります。こちらも、対となるwhen-notがあります。when-letif-letのwhenを使用する版です。条件がtrueになる場合に、変数に値を束縛できる以外は、whenと同じ特徴を持ちます。nilcaseここから、複数の条件を扱うものになります。caseの次に指定した値と、以降に比較する値、結果値のペアを順に並べていきます。比較は=で行われる?いずれの条件にもマッチしなかった場合については、デフォルト値を単独で書きます。otherなお、デフォルトケースを用意せずにいずれの条件にもマッチしなかった場合は、IllegalArgumentExceptionがスローされます。3condcaseより、もう少し汎用的な使い方ができます。caseのように比較対象の値を指定するわけでなく、条件式そのものを並べていきます。条件式がtrueになった場合の結果値は、caseと同様すぐ次に書きます。デフォルトケースは:elseで指定します。otherデフォルトケースを定義せず、いずれの条件にもマッチしなかった場合は、nilが返ります。nilcondpcondの変形?condp自身は、condを使って書かれているようですが...。最初に、述語と比較対象の値を取ります。その後の定義方法は、caseと同じです。other述語を取るので、もう少し変わった使い方もできるようです。4]))のような形で実行されているっぽいですね。その他、:>>を使用することでマッチした値を引数に取る関数を実行させることもできます。5最初の例は、1がマッチするのでそれを10倍にしています。次の例は、6がマッチするのでデクリメントして返却しています。condpの場合は、デフォルトケースを定義せずにいずれの条件式にもマッチしなかった場合は、IllegalArgumentExceptionがスローされます。〜形態素解析からワードカウン...ClojureとKuromojiを使った、面白そうなエントリがあったのでCl...2013-09-10HBaseでCRUD+Scan基礎的なAPIをいろいろ触ってみようということで。5はてなブログをはじめよう!Kazuhiraさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。