浏览 2216 次
锁定老帖子 主题:升级到Ruby 1.9 笔记三
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-08-19
最后修改:2010-08-24
但我在升级的时候还是遇到了问题。下面是测试代码,保存为文件test.rb: require 'test/unit' class Test_Main < Test::Unit::TestCase def test1 puts "ARGV[0] = %s" % ARGV[0] puts "ARGV[1] = %s" % ARGV[1] puts "ARGV[2] = %s" % ARGV[2] end end 在Ruby 1.8运行: ruby ./test.rb -- a b c Loaded suite ./test Started ARGV[0] = a ARGV[1] = b ARGV[2] = c 在Ruby 1.9运行: ruby ./test.rb -- a b c Loaded suite ./test Started ARGV[0] = -- ARGV[1] = a ARGV[2] = b 从运行结果可以看到新的测试框架在解析参数的时候没有过滤掉--,这个导致测试用例在解析参数的时候出错。 解决方法: 安装test-unit Gem恢复使用Unit::Test测试框架。 + 在Ruby 1.8, instance_variables方法会返回所有成员变量名,例如: irb(main):003:0> class A irb(main):004:1> def initialize irb(main):005:2> @a = 1 irb(main):006:2> end irb(main):007:1> end => nil irb(main):008:0> a = A.new => #<A:0xb7c08980 @a=1> irb(main):009:0> a.instance_variables => ["@a"] 在Ruby 1.9, instance_variables会返回所有成员变量Symbol名,例如: irb(main):001:0> class A irb(main):002:1> def initialize irb(main):003:2> @a = 1 irb(main):004:2> end irb(main):005:1> end => nil irb(main):006:0> a = A.new => #<A:0x0000001754caf0 @a=1> irb(main):007:0> a.instance_variables => [:@a] + Array 对象的to_s方法会返回不同格式的字符串 Ruby 1.8: irb(main):001:0> [1,2,3].to_s => "123" Ruby 1.9: irb(main):001:0> [1,2,3].to_s => "[1, 2, 3]" 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |