• silasmariner
    link
    fedilink
    arrow-up
    84
    arrow-down
    1
    ·
    edit-2
    9 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)

      • silasmariner
        link
        fedilink
        arrow-up
        9
        arrow-down
        1
        ·
        9 months ago

        Implicit was too much of a give away wasn’t it?

        • Magnetar@feddit.de
          link
          fedilink
          arrow-up
          7
          ·
          edit-2
          9 months ago

          I’ve literally seen code that does something awfully similar. But you could have used an Enumeration.

          Fuck, I think you just gave me an idea for an issue in my code that has bugged me for days.

          • silasmariner
            link
            fedilink
            arrow-up
            6
            ·
            edit-2
            9 months ago

            I could’ve used a lot of things, but I’m on my phone and I wanted fewer characters to render it, whilst being sure it would work without having to run it.

            Also, I am pleased to have maybe helped. Perhaps we can be friends, you and I. Perhaps not. Idk, maybe you punch dogs, why would you do that? Seems mean.

            Have you ever just, like, edited a comment? How do people know when you did it? I guess if I were writing a thing to check it I’d use a registry of timestamps and checksums… So, like, ok, you can track, but why, how does it look?

            Anyway sorry I had some drinks between now and first post, goodnight

    • paholg@lemm.ee
      link
      fedilink
      English
      arrow-up
      21
      ·
      9 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
        link
        fedilink
        arrow-up
        5
        ·
        edit-2
        9 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