• vga@sopuli.xyz
    link
    fedilink
    arrow-up
    5
    ·
    edit-2
    10 hours ago

    Ruby is object-oriented, modelled after Smalltalk mostly. So

    irb(main):001:0> 10.class
    => Integer
    

    So you’ll just have implement the method “years” on the Integer (or something more generic like Numeric) class and then “ago” on whatever class the years method returned.

    You might imagine that you can do something like 10.years().ago() in python but the parser prevents you:

    >>> 10.years
      File "<python-input-0>", line 1
        10.years
          ^
    SyntaxError: invalid decimal literal
    

    Doesn’t seem like it would have to prevent it, back in ruby:

    irb(main):001:0> 10.0.class
    => Float
    

    Ruby is a pretty cute language in my opinion, and I find it sad that python kinda drove over it.

      • vga@sopuli.xyz
        link
        fedilink
        arrow-up
        1
        ·
        edit-2
        10 hours ago

        Yeah, I figured there would be a workaround. Also

        >>> (10).years()
        Traceback (most recent call last):
          File "<python-input-0>", line 1, in <module>
            (10).years()
            ^^^^^^^^^^
        AttributeError: 'int' object has no attribute 'years'
        

        But the other thing is also: can you add methods to the int class so that they’re available everywhere? I suspect that you cannot in python, at least without significant hackery. And I also suspect that it’s probably something they decided to prevent knowingly.