年の範囲 in when_exe (補足)
2022-01-22 年の範囲 in when_exe
この中の、
P1Y
は1年間を表現する書式で、when_exe では対応する TM::PeriodDuration 型の
定数 P1Y が、When モジュール直下に定義されています↓。
https://rubydoc.info/gems/when_exe/When#P1Y-constant
一方、2年間を表す定数 P2Y は、ここ↑に記述がないことからもわかるように、
実はあらかじめ定義してはいません。ところが、When モジュールでは P1Y と
同じように P2Y も使うことができる[1]。
これは When モジュールが未定義の P2Y を参照した場合、const_missing 例外
処理をトラップして P2Y を定義して返すようにしているからです。
こういうことができるのが when_exe ライブラリの開発言語に Ruby を選んだ
理由のひとつですが、最近の動向からすると ~_missing 系の処理は、型推論
などの足かせになることもあり、時代遅れになりつつあるのかもしれません。
[1] 2 を他の自然数に代えても同様。
この中の、
P1Y
は1年間を表現する書式で、when_exe では対応する TM::PeriodDuration 型の
定数 P1Y が、When モジュール直下に定義されています↓。
https://rubydoc.info/gems/when_exe/When#P1Y-constant
一方、2年間を表す定数 P2Y は、ここ↑に記述がないことからもわかるように、
実はあらかじめ定義してはいません。ところが、When モジュールでは P1Y と
同じように P2Y も使うことができる[1]。
これは When モジュールが未定義の P2Y を参照した場合、const_missing 例外
処理をトラップして P2Y を定義して返すようにしているからです。
こういうことができるのが when_exe ライブラリの開発言語に Ruby を選んだ
理由のひとつですが、最近の動向からすると ~_missing 系の処理は、型推論
などの足かせになることもあり、時代遅れになりつつあるのかもしれません。
[1] 2 を他の自然数に代えても同様。
この記事へのコメント