Delphi(Object Pascal)でcaseを式にする

Rubyのcaseは最後に評価した式の結果を返します。

次のRubyのコードでは、caseの返した値を変数iに代入しています。

i = case something
  when FOO
    1
  when BAR
    2
  else
    3
  end

Delphi(Object Pascal)でも、caseで値を返したい。

無名メソッドを使えば、次のようにできました。

i := (function(): Integer
  begin
    case something of
      FOO: Exit(1);
      BAR: Exit(2);
      else Exit(3);
    end;
  end)();

Delphi XE6で確認しました。

C++の場合は次のようになります。(switchを式にする in C++11 – Faith and Brave – C++で遊ぼうを参考にしました。)

auto i = [&]{ switch (something) {
    case FOO: return 1;
    case BAR: return 2;
    default:  return 3;
}}();

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください