かける!記憶の中最初からを本にして窓辺で読みたい。技術2022.05.06こんにちは。かける!のざわ(@zw_kakeru)です。C#(およびその他の言語でも)のstringリストの要素を文字数順にソートする方法です。ラムダ式を使えば簡単に実現できますが、なぜこの書き方でこうなるのか、自分の勉強用に書き記しておきます。目次ラムダ式によるstringリストの文字数順ソート解説おわりにラムダ式によるstringリストの文字数順ソートタイトルの通りです。C#で文字数順ソートを実現するコードは次の通りです。}}これの実行結果は次の通りです。USAlistの中身が、文字数が多いものから順にソートできています(同じ文字数の場合は元々の順番のまま)。実際にソートを行っているのは6行目です。s.Length);第一引数のlist、これはOK。ソート対象のリストを渡しています。第二引数でラムダ式を用いた関数が指定されていますが、こちらも何となくは意味が分かります。s.Lengthを行い、その結果が正か負かによって順番を入れ替えるかどうか決定します。s.Lengthが負になる(sの方がtよりも長い)ようにlist内の要素を並べ替える(ソートする)ということです。この記述でソートが実現できるのでしょうか。C#公式ドキュメントを確認すると、Array.Sortについては次のように書かれています。使用して並べ替えます。IComparerとは何か。つのオブジェクトを比較するメソッド」であると書かれています。ここで指定しているメソッドは、順序を比較するときの比較演算子のような役割を持っているのです。(ここが一番のポイント。)ソートアルゴリズム自体はシステム側が用意しているものを使います。それがクイックソートなのかバブルソートなのか知りませんが、ソートという操作は最終的には2つの要素同士の比較を繰り返していくことによって実現されます。s.Lengthの処理なのです。ソート処理は最終的には2つの要素の比較しかやっていなくて、そのときの比較方法をラムダ式で書いている、というのが答えです。tってどこから取ってくるんだよ、全部組み合わせを走査するように取ってくるんかな。してもそれぞれで引き算して正か負か分かったところでそれをどうソート結果としてまとめるんだ。)と思い込んでいて、このソート記述がずっと謎だったのでようやく解決して良かったです。長年の疑問が解決して大変スッキリしました。明日から自信を持って記述することができます。わかりやすさを優先して結局ラムダ式の説明はほとんどしませんでした。(本当はdelegateがうんたら、みたいな話があったりするんです。)もっと詳しく知りたい人は各自で調べてください。技術AppStore/GooglePlayStoreへのアプリ申請時に必要なスクリーンショットのサイズこんにちは。かける!のざわ(@zw_kakeru)です。AppStoreとGooglePlayStoreへのアプリ申請時に必要になるスクリーンショットのサイズを一覧にしてまとめておきます(自分用)。Pythonでテキストファイルを読み込んでOutlookからメールを自動送信するこんにちは。かける!のざわ(@zw_kakeru)です。今回はpythonを用いてテキストファイルの中身を取得し、その内容を取り込んだOutlookメールを自動で送信(およびメール削除)するスクリプトを作成しました。動的な文章をテキス...技術マージ済みのbranchを削除するとGitHubの芝はハゲるのかこんにちは。かける!のざわ(@zw_kakeru)です。GitHubでマージ済みのリモートブランチを削除したら、芝(ContributionGraph)もハゲてしまうのか調べてみました。【何年でも使える】GoogleFormとSpreadSheetを使った家計簿アプリがめちゃくちゃ使い勝手が良い話こんにちは。かける!のざわ(@zw_kakeru)です。今回は、めちゃくちゃ使い勝手の良い家計簿システムを作った(というより改築した)のでそちらの紹介をしていきます。【Flutter/Dart】google_mobile_ads導入エラー奮闘記こんにちは。かける!のざわ(@zw_kakeru)です。現在、2021年の3月です。先日、Flutter2がリリースされ、同時にgoogle_mobile_adsが発表されました。【ServiceNow】ServicePortalとServiceCatalogのチュートリアル(前編)こんにちは。かける!のざわ(@zw_kakeru)です。ServiceNowが提供する様々な機能の中で、ServicePortalとServiceCatalogを使ってトライアル実装をしてみようと思います。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。スポンサーリンクタイトルとURLをコピーしました。