3 ms·
Refinements would be more useful if you could expose the refinements, but currently you can't. module HashExts refine Hash do def symbolize_v
by ezekg 3y ago
Refinements would be more useful if you could expose the refinements, but currently you can't.
module HashExts
refine Hash do
def symbolize_values = transform_values { _1.to_sym }
end
end
module Test
using HashExts
def self.new_h = Hash.new
end
puts Test.new_h.symbolize_values
# => undefined method `symbolize_values' for {}:Hash (NoMethodError)
- ljm 3y agoYeah, I feel like there was a bit of an expectation mismatch around that. `using` makes a lot more semantic sense than `include` or `extend` in a lot of cases but it didn’t play out that way and we’re still living with the unusual convention of making ‘x-able’s and writing ‘concerns’. Not to mention that they were file-scoped and not lexical in their first version so had limited utility for library devs. As far as I know the teething issues around refinements are ironed out but they remain an obscurity.