Ad
  • Custom User Avatar

    It took me a while to figure out what's happening here. In case anyone else is interested.
    Basically, any Regexp without closed parentheses will throw an exception, which Insti rescues by returning false. Tricky.

    Just punch this in your repl:

    /asdas()/
    Regexp.new("gf()((asda)asd)()sds") rescue "I won't need rescuing"
    Regexp.new("gf(sds") rescue "please rescue me!!!"
    

    The trickier part is tilde. I found the answer here - Stackoverflow & Ruby Regexp Docs very last method #~

    It's matching the Regexp to the last 'gets' prompt (only if it's valid, i.e., only if it has closed or no parenthesis). The variable $_ holds the most recent and scoped value of gets, which, in the case of #valid_parentheses is nothing, nada, nil.

    For illustration:

    def what_does_tidle_do?(string)
      print "Type something: "
      gets.chomp
      puts "Your last gets statement was, '" + $_.chomp + "', now I'll find the first index of what you typed against your regexified method argument."
      ~ Regexp.new(string)
    end
    
    > what_does_tidle_do?("cheese")
     Type something: string cheese mmmm
     Your last gets statement was, 'string cheese mmmm', now I'll find the first index of what you typed against your regexified method argument.
    => 7
    
  • Custom User Avatar

    I like this. Your loop is elegant.

  • Custom User Avatar

    My confusion mostly stems from how many other alternative solutions people come up. Lots of 'calls' and 'yields'. I'm very green at ruby, so these techniques appear to be some kind of black magic.

    Am I correct in saying the purpose of these exercises is to more or less be aware that these methods exist. It's like saying, here's how you can wash your boots:

    def washboots boots
    boots.washboots
    end

    washboots(myboots)

    Sweet, its nice to know I can wash my boots. But I don't feel so special the way I went about it.

    I do not intend to disparage the authors work. I'm just trying to make sure I'm not missing something.

  • Custom User Avatar

    Doesn't this defeat the purpose of desiging the ins and outs of your own drop method?

  • Custom User Avatar

    It should be specified that a 'return' is vital. I punched this code sans return into another interpreter and it came out no problem. It was until I 'return'ed my hash at the end of the method did the test accept it.