年の範囲 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 を他の自然数に代えても同様。

この記事へのコメント

この記事へのトラックバック