I know how to do it like bits_to_bytes(8) but I think that does not look
nearly as good. I know this is possible but I only pass the
bits_to_bytes(8) way so far.
i try 8.bits_to_bytes but it of course says that I am not providing a
parameter and one is required.
I have a lot of numbers and I need to work with both bits and byte
representations of them depending on the exact circumstances, and in the
process of switching from magic
numbers to ConstantNames I thought it looked ugly to have so many
constant names and then / 8 when it is done, I would rather have
(BitsInFile - BitsToSubstract).bits_to_bytes (for a random although not
very good example)
since that seems more consistent
You have to define a “bits_to_bytes” method in the Integer class:
class Integer
def bits_to_bytes
# your code
end
end
puts 8.bits_to_bytes
However, it’s probably not a good idea to clutter the Integer class with
all kinds of special methods. Especially since “it looks better” isn’t
really an argument.
I’d rather put the “bits_to_bytes” into a module like “BitOperations” or
so. Then you can call it by “BitOperations.bits_to_bytes(8)”
If you want “obj.meth” to execute, then you need to define ‘meth’ within
the class of obj (or within the singleton class of obj).
8 is a Fixnum (which is an Integer which is a Numeric). Since you may
want this to work for Bignums too, then Integer is probably the right
place to define it, since Integer is the common superclass of both
Fixnum and Bignum.