henry_flower (
henry_flower) wrote2014-09-07 03:38 pm
Entry tags:
Из mruby'ивского mrbgems/mruby-array-ext/mrblib/array.rb: def |(elem) raise TypeError, "ca
Из mruby'ивского mrbgems/mruby-array-ext/mrblib/array.rb:
def |(elem)
raise TypeError, "can't convert #{elem.class} into Array" unless elem.class == Array
ary = self + elem
ary.uniq! or ary
end
Мне нравится вот это "elem.class == Array". Т.е. если я override is_a? чтобы притворится Array, то
a = Foo.new # якобы Array
a << 1
и
[1] + [2] | a
фиг вам.
Как же duck typing?
В cruby все работает, а тут остается только делать monkey patch для __ary_eq.
:(
def |(elem)
raise TypeError, "can't convert #{elem.class} into Array" unless elem.class == Array
ary = self + elem
ary.uniq! or ary
end
Мне нравится вот это "elem.class == Array". Т.е. если я override is_a? чтобы притворится Array, то
a = Foo.new # якобы Array
a << 1
и
[1] + [2] | a
фиг вам.
Как же duck typing?
В cruby все работает, а тут остается только делать monkey patch для __ary_eq.
:(
Permalink: https://plus.google.com/115290581164606462017/posts/jJax2tBGB5b
