タグ

mapとcsに関するkiyo_hikoのブックマーク (2)

  • JavaプログラマーがC#でプログラムを書いて引っかかったところ その1 - 地平線に行く

    案件が変わり、仕事で使う言語がJavaからC#に変わりました。 その際に、C#でプログラムを書いていて引っかかったところをメモしておきます。 とりあえず、連想配列(Dictionary)を使ったときのことをメモ。 書き方の違い C#は、連想配列用に言語仕様が用意されています(インデクサ―)。 /* -- Java -- */ String str = map.get("abc"); /* -- C# -- */ string str = dictionary["abc"]; 最初に書いた際、このことを忘れて取得メソッドを探してしまいました・・・*1。 挙動の違い 要素を登録する際に、すでに同じキーを持つ要素が登録されていた場合、 Javaは、新しい要素を登録する。このとき、すでにある要素を戻り値として返す。 C#は、新しい要素を登録する。このとき、すでにある要素を戻り値として返さない。 た

    JavaプログラマーがC#でプログラムを書いて引っかかったところ その1 - 地平線に行く
    kiyo_hiko
    kiyo_hiko 2015/08/05
    Javaと違ってindexとしてアクセス、要素が上書き、例外が投げられるということ
  • C# で map とか reduce みたいな楽しいリスト操作をしたい

    プログラミング言語がロジックを組むのに向いているかいないかを判断するときの基準に、私はよく「文字列の操作が優れているか否か」「配列・辞書・集合の操作が優れているか否か」を評価点に挙げます。文字列や配列、辞書、集合の操作はほとんどすべてのアプリケーションで必要になり、それらの生産性が高く高速に処理してくれる言語ほど簡単で高速なロジックが組めると思うからです。 そういう意味でObjective-Cを考えると、文字列の操作はまぁまぁ良い(特にUnicode周りがなかなか優れている、正規化もできるし)のですが、配列・辞書・集合の操作がイマイチで、作るの面倒なら操作するのも面倒。さらには良く欲しくなる以下の操作が欠けています。map - 条件式を渡して、もとの集合の各要素に条件式を通した結果を新たな集合として返す。 reduce - 条件式を渡して、要素を前から順番に計算して畳み込み、集合から一つの

    kiyo_hiko
    kiyo_hiko 2015/07/15
    Xs.Aggregate(F, S => F ⊕ S);
  • 1