4 ms·
Ruby Tips Part 1
- hk__2 13y agoIs this: def fibonacci(max=Float::INFINITY) # ... while i < max # ... end end better than this: def fibonacci(max=nil) # ... while max && i < max # ... end end ? (genuine question)
- Xylakant 13y agoyes. The first one does what it's intended to, the second plain fails :) Voice-of-Evening:~ $ irb irb(main):001:0> max=Float::INFINITY => Infinity irb(main):002:0> i = 0 => 0 irb(main):003:0> i < max => true irb(main):004:0> max = nil => nil irb(main):005:0> max && i < max => nil The second version will only provide any result when a specific max value was given, while the first one will loop into infinity.
- nilved 13y agoWhat you meant is `while !max || max < i`, but the answer is the same: the former will perform better because it only makes one comparison for each iteration of the loop. The latter needs to additionally check the existence of max.
- ldubinets 13y agoRuby is neat! Except for this part: return nil unless other.is_a?(self.class)
- klibertp 13y agoWait, why? Try to read it aloud and it will make sense. I've seen lot's of hard and confusing syntax but this is not one of them. And I'm not a Ruby developer.
- cheald 13y agoPost conditions are odd if you're not used to them, but once you start to mentally allow for them, they're really quite nice.
- ldubinets 13y agoAh, seems everybody misunderstood my comment (not hard to see why). It's not the post conditions that bother me, its the dynamic typing! In my opinion, ruby's duck typing really only works until you actually need it.
- xentronium 13y agoIs it a statement-modifier 'unless' that bothers you? `return ... unless ...` is kind of idiomatic way of returning early in the function. You get used to this shortcut ridiculously fast.
- Groxx 13y agoI'm a fan of: while true do puts 'lol' end unless true but seriously, I like postconditions. they're also handy for encoding intent, if you have a pattern of the left-hand-side being the primary logic flow.
- waxjar 13y agothis can also be written as other.is_a?(self.class) || return if you prefer that.
- GrinningFool 13y agoSorry, offtopic mini-rant coming: this site (and so many others) become much more readable if you disable the body text CSS. Actually this specific site does quite well when you disable all CSS. What is with the trend of mid-range gray on white or light gray these days? Does anyone find that easy to read?
- fedesilva 13y agoMaybe it's old age but I find that annoying too. Looks pretty but is unreadable.