• silasmariner@programming.dev
    link
    fedilink
    arrow-up
    44
    arrow-down
    1
    ·
    edit-2
    3 months ago

    They missed out the context code:

    trait DoW { def length: FiniteDuration }
    object Monday extends DoW { override def length = 24.hours }
    ...
    implicit def toDoW(s: String): DoW = s match {
     case "Monday" => Monday
    ...
    }
    var day: DoW = _
    

    (Duration formatting and language identification are left as an exercise for the reader)

    • paholg@lemm.ee
      link
      fedilink
      English
      arrow-up
      21
      ·
      3 months ago

      Works even better in Ruby, as the code as given is valid, you just need to monkey patch length:

      #!/usr/bin/env ruby
      
      module DayLength
        def length
          if ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"].include? self
            "24 hours"
          else
            super
          end
        end
      end
      
      class String
        prepend DayLength
      end
      
      day = "Monday"
      
      x = day.length
      
      print(x)
      
      • silasmariner@programming.dev
        link
        fedilink
        arrow-up
        5
        ·
        edit-2
        3 months ago

        Code as given can be made valid in scala I believe. My starter was based on that assumption. I think raku can do it too, but you would probably have to \x = $ to make it work…

        Edit: misread your comment slightly, CBA to change mine now. It is what it is