オブジェクト指向的な記述に拘りががが

プログラミング言語のお勉強をJavaから始めたオタク。

業務ではC#を扱ってた。

現在はTypeScriptでおもちゃを作ってる。


React(ts)で配列をシャッフルしたくて

declare global {
 interface Array<T> {
   shuffle(): T[];
 }
}

Array.prototype.shuffle = function () {
 let list = this.slice();

 for (let i = list.length - 1; i > 0; i--) {
   let r = Math.floor(Math.random() * (i + 1));
   let tmp = list[i];
   list[i] = list[r];
   list[r] = tmp;
 }

 return list;
}

と書いたらESLintから怒られが発生した。

怒られずに書く方法ないかなとGUGUっていたら

関数にすればいい!

function shuffle<T>(list: T[]): T[] {
 // shuffleする処理が云々
 return list;
};

みたいな意見がちらほら。


いや~~~~~なんか受け付けないんすよね。

そのクラスのデータのみに依存する処理は、そのクラスのメソッドとして備えておきたくなっちゃうんですよねぇ。

こうではなく

import Utils from "./myutils";

const list = [1, 2, 3, 4, 5];

const shuffledlist = Utils.shuffle(list);

こうでありたい。

const list = [1, 2, 3, 4, 5];

const shuffledlist = list.shuffle();


この感覚のせいでPythonとかめちゃくちゃ受け付けられない。

list = [0, 1, 2, 3]

print(len(list))

いやlist.lenさせてや~~~~~ってなっちゃう。


伝われ。

この記事が気に入ったら、サポートをしてみませんか?
気軽にクリエイターの支援と、記事のオススメができます!
1
雑記を雑に記します
コメントを投稿するには、 ログイン または 会員登録 をする必要があります。