diary

I like Hatena Star with a text selection.

2020-12-16

module M
  # M#itself はないけどaliasを定義できる
  alias itself2 itself
end

class C < BasicObject
  include ::M
end

# C#itself はないけど呼べる
C.new.itself2

method = Object.instance_method(:method)
pp method.bind_call(C.new, :itself2) # => #<Method: C(Kernel)#itself2(itself)()>

module内でのaliasで、moduleには存在しないけどObjectには存在するメソッドならaliasを作れるということを知った。 この例ではM#itselfは存在しないけど、Object#itselfは存在するからaliasを作れる。 そしてBasicObjectを継承したクラスでそのモジュールをincludeすると、Kernelのitselfを呼べる。へー。

これはRBSでこういう例がエラーになって、Rubyではどうなんだろうと調べていて知った。


pocke.hatenablog.com

ブログ書いた。 やったことをずらずら書いただけなので読んでもあまり面白くはないと思うのだけど、書くのは楽しかった。


github.com

gem_rbsRBSをアップデートするPRを書いた、けどまだやることがあるのでとりあえずdraftで雑に…