From: Krekna Mektek Date: 2006-12-30T01:08:48+09:00 Subject: Another Q: find behavior Hi, Still learning from the Pickaxe book, and I've got a question about this code: class Array def find for i in 0..size value = self[i] puts self[i] return value if yield(value) end return nil end end [1,3,5,7,9].find {|v| v*v > 30 } irb(main):369:0> [1,3,5,7,9].find {|v| v*v > 30 } => 7 how come it prints only 7, and not also 9? The loop is not stopping as far as I can see, and 9 times 9 is also bigger then 30. Krekna