喪中ですが
去年親父が亡くなったので、新年のご挨拶はできませんが、皆様にとって良い一年になりますように!!
今年のプログラミングに勉強をどんどんやっていこうと考えております。私は去年末、親父の件が一段落したあたりから、py_optionというPythonのライブラリを作成し始めました。PythonでもRustのOptionのようなものを使えればいいなぁ、なんてなんとなく思って作り始めました。あと、Elixirも少しかじったりしました。
今年も好奇心、興味だけは失わずにがんばっていこうと思います。
py_optionについて
py_optionですが、Pythonでは別にいらない説があるのですが、そんなことは気にせず作っております。
ソースコードはまだ途中ではありますが、GitHubにあげています。
具体的な話になりますが、Pythonにはインターフェースの機能がないので、抽象クラスOptionType
クラスを作成し、それをもとにSome
とNon
を作成しました。Non
となったのはPythonではNone
がすでに存在しているためです。PythonのNone
は特にメソッドを持っているものではありません。
Some
やNon
でそれぞれOptionType
は作成できますが、Option
クラスを作成し、Option.new()
というスタティックメソッドで値xを与えた場合はSome(x)
、値がない場合はNon
をそれぞれ作成できるようにしました。
Rustでは変数束縛する際let x: Option<i32> = Option::default();
とすると、Option<i32>
のNone
が束縛されますが、Pythonでは型は動的に決まるので、単純にOption.new()
という形にしてみました。
また通常PythonのNone
ではメソッドを持っていませんが、こちらのNon
の場合、Some(x)
同様のメソッドを使えるようにしました。
ちょっと悩んだところは、RustのOptionにand
とor
というメソッドがあるのですが、これらを実装しようとした際、最初は特殊メソッド__and__
と__or__
でやってみたのですが、どうも挙動が望むものにならない。しかし、and
もor
もキーワードなので、そのまま使うことができない。なので、とりあえずand_
とor_
というメソッド名でお茶を濁しました。このあたりは、今後いい感じにしていきたいと思っています。
今年は…
いきなり、北陸で激しい地震がありました。
住んでいたことがあるので、知り合いや友達、親戚もいるのでかなり心配になりました。
とりあえず連絡がとれて、ほっとしていますが、これからまだどうなるかわかりません。
ひょっとしたら、明日、我々が住んでいる地域が同じようになるかもしれない。そう思って生活していくこと、助け合うことが大事だと心に留めて生活していこうと思います。
また、ちょっとずつ進行している母の認知症に合わせた生活、ごまかしごまかしでも母が楽しく最後まで生きれるように、何とか工夫して生活していこうと考えています。
なかなか難しいですが……