> > validate do |value| > > raise Puppet::Error, "number has to be numeric, not #{value}" > unless value =~ /^[0-9]+$/ > > - raise Puppet::Error, "number #{value} out of range" unless > (0...2**16).include?(Integer(value)) > > just out of curiosity: Will (0...2**16) generate just a huge array with > include? beeing extreamly slow or does ruby handle ranges of integers > differently? >
It's good. Ranges aren't arrays (you can convert them to arrays, but it doesn't happen implicitly); they are two element structures (a low value/high value pair). That allows you to do things like 1.14..3.14, and 5..-1 which wouldn't work as arrays. As for the performance aspect, go into irb and try: (0..2**2000).include? 1234 It comes back immediately without prompting you to purchase more ram. :) It definitely pays to be on the lookout for things like this because small differences in idiom can (like the case in rails a few years ago http://kevin.scaldeferri.com/blog/, or our make-and-throw-away-arrays issue in rest #6257) be significant performance hits, so thanks for asking. -- M ------------------------------------------------------------ When in trouble or in doubt, run in circles, scream and shout. -- 1920's parody of the maritime general prudential rule ------------------------------------------------------------ -- You received this message because you are subscribed to the Google Groups "Puppet Developers" group. To post to this group, send email to puppet-dev@googlegroups.com. To unsubscribe from this group, send email to puppet-dev+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-dev?hl=en.