We might define it on Module as
def ~===(obj)
respond_to?(:try_convert)) ?
self.try_convert(obj) :
self === obj ? obj : nil
end
Simplifying coercion like:
case input
in ~Integer => int then ...
in ~String => str then ...
etc
We might define it on Module as
def ~===(obj)
respond_to?(:try_convert)) ?
self.try_convert(obj) :
self === obj ? obj : nil
end
Simplifying coercion like:
case input
in ~Integer => int then ...
in ~String => str then ...
etc
`str => ~/(foo+)(ba+r)/ => (foo, bar)`
or
`str => /(foo+)(ba+r)/ ~> (foo, bar)`
`str => ~/(foo+)(ba+r)/ => (foo, bar)`
or
`str => /(foo+)(ba+r)/ ~> (foo, bar)`
`def log(msg = "" => String, level: :info => Level) => void`
or
`def log(msg = "" in String, level: :info in Level) => void`
or
`def log(msg in String = "", level: in Level = :info) => void`
etc
`def log(msg = "" => String, level: :info => Level) => void`
or
`def log(msg = "" in String, level: :info in Level) => void`
or
`def log(msg in String = "", level: in Level = :info) => void`
etc