只显示主题贴
Ruby1.9对算术运算的优化比较多之前有人的测试结果是综合性能1.9是1.8的3倍多一点
- 进入论坛 Ruby 版
可能是跟method搜索的顺序有关,eigenclass比module先搜索如果在Sample里的method_has方法里加一个super(),就能看到调用到module里的方法了
class Sample
class<<self
private
def method_has
puts "method has"
super()
end
end
end
Sample.send(:method_has)
=>
method has
new methods has
- 进入论坛 Ruby 版
graying 写道说优化谈不上,但是ruby写的确方便很多。
哪里看到过的例子,回忆了写的:
(2..50).each{|n| s=true; (2..n-1).each{|f| (s=false; break;) if n%f==0 }; puts n if s}
(2..50).inject([]) { |s, e| (s.map { |x| e % x }).include?(0) ? s : s << e }
- 进入论坛 Ruby 版
装oniguruma, 这个是Ruby2.0采用的RE库,也可以自己装在1.8里"Ruby bindings to the great Oniguruma regular expression library featuring: increased performance; same interface than standard Regexp class; support for named groups, look-ahead, look-behind; and other cool features!"
- 进入论坛 Ruby 版
半人马 写道to njmzhang: 按照你的逻辑,anyObject.exist?这种方法的存在似乎是一种错误,呵呵。
这种方法本来就是个错误,anObject是一个变量,如果它指向一个对象,那么exist?必然返回true。你能往一个不存在的对象发送消息exist?吗
就好像是问一个人“你是不是人”一样傻
PS: Python里的文件测试方法也是在一个单独的模块里,
os.path.exists(), os.path.isdir(), os.path.isfile()
- 进入论坛 Ruby 版
半人马 写道gigix 写道is_dir = File.directory? "xxx"
FileUtils.rm_rf "xxx"
也许只是你还没找到正确的惯用法吧?
这两句不也是古怪的静态方法么?
我看才你才是混淆抽象和具体。
一个String对象"xxx"代表一个名字,一个File.new("xxx")对象代表一个文件,它的名字叫"xxx"。 没有人用String代表一个文件。
Ruby里class跟Java里class的是两码事, 它不光是一类事物的抽象。Ruby的class本身就是一个对象,有自己的行为。 File不光负责创建它的instance,还有检索和测试的功能。 Fi ...
- 进入论坛 Ruby 版
半人马 写道njmzhang 写道Java的实现就一定是合理的?
FileTest的目的就是做测试,File的目的是文件操作
测试不需要有副作用。
“我想看看这个文件是否存在”“如果这个文件存在,我想看看这个文件的内容”中,“这个文件”指的应该是同一实体?既然是同一实体,为什么需要有不同的抽象(String vs File)?
关键是这个文件可能还不存在,这个文件不存在的时候,自然没有File这个实体
- 进入论坛 Ruby 版
Java的实现就一定是合理的?FileTest的目的就是做测试,File的目的是文件操作测试不需要有副作用。
- 进入论坛 Ruby 版







评论排行榜