Python を覚えるために,Python を使って LeetCode に挑戦してみました.
そしたらよくわかんないバグが頻発してしまいまして.
変数を宣言するじゃないですか.その宣言した変数を引数に使って関数を走らせてるだけなのに,変数の値がいつのまにか更新されて変化してるんですよ.
不思議ですよね.
それで調べたら,参照渡しと値渡しというのがあるみたいです.
わかってない私が解説するのもアレなんで,詳しいことは調べてください.
とにかく,Python では変数を扱う時にミュータブルオブジェクトだったら参照渡しになってしまって,変数の値が書き換えられてしまうみたいですね.
許せないですね.
TypeScriptでは発生しないと思いきや,勝手に参照渡しになることはTypeScriptでもあるみたいですね.
変数の値が意図せず変更されるのはバグの温床なので,こちらが明示的に宣言しない限り絶対に値渡しになる,みたいな仕様の言語を使いたいですね….
ちょうどTypeScriptを使い始めたことで型を意識するようになったように,そういう言語があれば参照渡しと値渡しの違いに敏感になれそうやし,教育的にもGoodでは.
たぶんあると思うので,探してみます.
追記.CryptoHackとかHackTheBoxとか登録し過ぎて完全にキャパオーバーなので,暗号理論とかセキュリティ関連は全部HackTheBoxにまとめて,離散最適化とかアルゴリズム論関連は全部LeetCodeにまとめようかなと思ってます.せっかく激賞したけど,CryptoHack放置しちゃうかも.
まだ確定ではないですけど.