本帖最后由 SixRC 于 2017-11-22 12:12 编辑
我也突发奇想写了一个
极致效率的话
不如预读取加哈希?
class Rini def initialize(ini) @hash,temp=Hash.new,nil open(ini,'r').read{|i|i.delete!(" ")}.each_line do |i| next if j=i.match(/\[.*\]/) and [j=j[0],j=j[1..-2],temp=@hash[j]=Hash.new] t=i.split("=") temp[t[0]]=t[1].chomp end end def read(section,key,default="nil") @hash[section] ? @hash[section][key] || default : default end end ba=Rini.new('a.ini') p ba.read('阿尔西斯','gender'),ba.read('帕吉尔','profile')
class Rini
def initialize(ini)
@hash,temp=Hash.new,nil
open(ini,'r').read{|i|i.delete!(" ")}.each_line do |i|
next if j=i.match(/\[.*\]/) and [j=j[0],j=j[1..-2],temp=@hash[j]=Hash.new]
t=i.split("=")
temp[t[0]]=t[1].chomp
end
end
def read(section,key,default="nil")
@hash[section] ? @hash[section][key] || default : default
end
end
ba=Rini.new('a.ini')
p ba.read('阿尔西斯','gender'),ba.read('帕吉尔','profile')
速度大概是
10000 次 0.005 s
|