array = [6,1,9,5,8,0,7,3,4,2] p array.sort! p array.sort{|a,b| if a == b then 1 elsif a < b then -1 elsif a > b then 0 end } #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] #array.sort!の結果 #[0, 1, 2, 6, 3, 8, 4, 7, 5, 9] #array.sort{|a,b| の結果 array.sort{|a,b|の方は a==bが0,a>bが1とすると結果が只のsort と同じになります。
ken -> ./p02.rb ./p02.rb:20:in `sqrt': failed to convert Range into Float (TypeError) from ./p02.rb:20:in `operation' from ./p02.rb:11:in `init' from ./p02.rb:10:in `each' from ./p02.rb:10:in `init' from ./p02.rb:29 ken ->
まず前者は、 if FileTest.file?(name) #ファイルがあるときの処理 else #ないときの処理 end
後者は begin...rescue...ensure...end 構文を使う。 begin for no in 1..10 ... end rescue Errno::ENOENT # ファイルがなくてオープンに失敗したときの処理 ensure # 例外が生じても必ず実行したい処理 catfile.close end