偶的ruby的书还在路上~
ruby几个方法学习
总结几个ruby中的方法
Kernel#test
偶然遇到的,曾经看过的几本书中都没有提到,非常好用, 尤其用在system manage方面
test(?C, 'a.txt') #返回文件a.txt最近的变动时间 test(?d, 'a.txt') #返回a.txt是不是目录
支持很多操作,非常类似于shell中的test(即[]), 不过功能更多,更多的操作符查看ri文档
bm
bm是ruby内置gem benchmark的方法,作用就是benchmark(性能测试), 使用前需要先调入
require 'benchmark'
include Benchmark
a = (1..1000000).map { rand(1000000) }
bm do |b|
b.report("Sort") { a.sort }
b.report("Sort by") { a.sort_by { |a| a } }
end
report中的参数用于输出结果中的标签(label)
可以用来测试代码的实行效率,优化时使用
Enumerable#inject
用于迭代, 每次迭代将返回运算结果, 下一次迭代将跳过之前云算过的项,把上一次运算结果作为起始参数(initial)用于下次迭代, 感觉比较绕口,还是看例子吧
(5..10).inject { |initial, n| initial + n }
#45
(5..10).inject(1) { |initial, n| initial + n }
#46
上面的第一个例子没有赋予初始值,那么就开始运算5 + 6, 将结果赋予initial, 然后进行11 + 7, 依次计算
第二个initial = 1, 所以结果为46
一个复杂点的例子
#找出最长的字符串 %W(apple pear banane).inject do |x, y| x.length > y.length ? x : y end #"banana" #找出最长字符串的长度 %W(apple pear banane).inject(0) do |x, y| x >= y.length ? x : y.length end #6sort, sort_by
sort_by接受一个参数作为block参数, sort可以不跟block或者传递两个参数给block
%W(apple pear banane).sort
%W(apple pear banane).sort_by { |word| word.length }
%W(apple pear banane).sort { |x, y| x.length <=> y.length }
上面第二个和第三个效果相同
复杂点的例子
将当前目录下的文件按照修改时间排序
files = Dir["*"]
files.sort { |a, b| File.new(a).mtime <=> File.new(b).mtime }[ 本帖最后由 shitou 于 2008-9-26 14:07 编辑 ]
[ 本帖最后由 shitou 于 2008-9-26 14:14 编辑 ]
偶的ruby的书还在路上~
对ruby了解的时候是在我用 RPG Game Maker 软件时知道的
ruby 现在也有很多游戏开发方面的框架,像IRRLICHT和Gosu, 其中IRRLICHT已经能达到PSP的水准了,手有点痒痒了
发表讨论