タグ

caseに関するnabinnoのブックマーク (5)

  • case, cond, and if — Elixir v1.18.2

    View Source case, cond, and if In this chapter, we will learn about the case, cond, and if control flow structures. case case allows us to compare a value against many patterns until we find a matching one: iex> case {1, 2, 3} do ...> {4, 5, 6} -> ...> "This clause won't match" ...> {1, x, 3} -> ...> "This clause will match and bind x to 2 in this clause" ...> _ -> ...> "This clause would match an

  • condとcase

    階層的条件 if 特別式は else 引数を利用することによって階層的な値の検出を行うことができます。 例えば (if test1 then1 (if test2 then2 (if ... という具合に、「~でなければ、~でなければ」という形に記述することができます。 こうすれば、階層的にデータを評価することができ、複数の複雑な条件を満たしているかどうかなどを調べることができます。 こうした階層的な分岐はプログラミングでは珍しいものではありません。 C言語のような手続き型言語でも、次のような if 文の階層化は頻繁に発生しています。 if (test1) { ... } else if (test2) { ... } else if (test3) { ... } ... しかし、関数型言語である LISP では、これを頻繁に記述するとコードが読みにくくなってしまいます。 もちろんある程

  • ITトレメ Sun Certified Programmer for the JAVA 2 Platform - @IT自分戦略研究所

  • Rubyのcase式と===演算子について - しばそんノート

    前フリ 奥様、知ってらした?Rubyのcase式ってすっごくパワフルなんですって!単なる同値判定で振り分けるだけじゃなくて、例えばこんなこともできちゃうらしいんですのよ! case gets.chomp when /おはよう/ puts 'おはようございます、お目覚めはいかがですか?' when /こんにちは/ puts 'こんにちは、いい天気ですね。' when /こんばんは/ puts 'こんばんは、遅くまでお疲れ様です。' else puts '何か御用でしょうか?' end あたくし、今までcase式の実力を見くびっていましたわ…! カラクリ どうしてこんなことができるのかというと、リファレンスマニュアルにも書いてあることなのですが、case式は===演算子を使ったif〜elsif〜end式と等価な処理を行うように実装されているからなんですね。 要は、この===演算子がキモなわけで

    Rubyのcase式と===演算子について - しばそんノート
  • Rubyのcaseを〇〇(言語名)のswitch文だと思っている人たちにぼくから一言ガツンと申し上げたい

    Rubyのcase」を一瞥し「あー要は〇〇(言語名)のswitchね」などと早合点し、その後もその真の価値を知ることなく一生を終えるプログラマが近年跡を絶たない。加えて、「今更条件分岐?RubyはOOPなんだからポリモフィズムじゃね?」とか「HashにProc突っ込んでcallするのがオレ流。」とかうそぶく人たちもまた増加の一途を辿っている。 そんな世の中にあって、ぼくは一言、できればガツンと一言申し上げたい。生まれも育ちもRubyなぼくから、是非ともそんな人たちに「Rubyのcase」について一言申し上げておきたい。 ─ 問題1 ─ 名前name、レベルlevel、ポイントpointの各属性を持った複数のCharacterオブジェクトcharlie, liz, benがある。 class Character < Struct.new(:name, :level, :point) def

  • 1