这两个红宝石之间有语义上的区别吗?
不应该有。并没有,至少与我已经测试的版本:
- YARV 1.9.2快照红宝石1.9.2dev(2010-01-02躯干26229)[i686的Linux的]
- YARV 1.9.1p243红宝石1.9.1p243(2009-07-16的修订24175)[I386-的mingw32]
- MRI 1.8.7p174红宝石1.8.7(2009-06-12 PATCHLEVEL 174)[i686的Linux的]
- MRI 1.8.6p383红宝石1.8.6(2009-08-04补丁级别383 (Java HotSpot TM客户端VM 1.7)[i386-mingw32]
- JRuby 1.5快照(1.9模式) jruby 1.5.0.dev(ruby 1.9.2dev trunk 24787)(2009-11-02 6586) (Java HotSpot™客户端)(j2y-java)
- JRuby 1.5快照(1.8模式) jruby 1.5.0.dev(ruby 1.8.7 patchlevel 174)(2009-11-02 6586) VM 1.7.0-ea)[x86-java]
- JRuby 1.4.0(1.9模式) jruby 1.4.0(ruby 1.9.2dev trunk 24787)(2009-11-02 69fbfa3)(Java HotSpot(TM) )客户端VM 1.7.0-ea)[x86-java]
- JRuby 1.4.0(1.8 mo de) jruby 1.4.0(2009-11-02 69fbfa3)(Java HotSpot TM Client VM 1.7.0-ea)[x86-java]
- JRuby 1.3.1 (1.9模式) jruby 1.3.1(ruby 1.8.6p287)(2009-06-15 2fd6c3d)(Java HotSpot(TM)Client VM 1.6.0_14)[i386-java]
- JRuby 1.3.1(1.8模式)的jruby 1.3.1(红宝石1.9.1p0)(2009-06-15 2fd6c3d)(爪哇的HotSpot(TM)客户机VM 1.6.0_14)[I386-java的]
- 的IronRuby IronRuby的0.9.1.0上。 NET 4.0.0.0
- IronRuby .NET 2.0.0上的IronRuby 0.9.2.0。0
既然您发布的代码示例是不完整的,甚至不正确地分析,我用了一个稍作修改的版本进行测试:
class C < Object
def semicolon(arg); self.foo(arg); end
def newlines(arg)
self.foo(arg)
end
def really_short(arg) foo(arg) end
def foo(arg) arg end
end
require 'test/unit'
class TestMethodDefinition < Test::Unit::TestCase
def test_that_semicolons_work
assert_equal :foo, C.new.semicolon(:foo)
end
def test_that_newlines_work
assert_equal :foo, C.new.newlines(:foo)
end
def test_that_really_short_definitions_work
assert_equal :foo, C.new.really_short(:foo)
end
end
你写
[.. 。]似乎并未被视为功能
你是什么意思? Ruby没有这样的功能,所以功能不起作用的事实不应该令人惊讶。
此外,您认为“认可”是什么意思?这个词在编程中有着非常明确的含义,但是你似乎并没有在这个意义上使用它。
最后,这是什么意思,它“出现”不工作?它是否或不工作?
你能提供一个完整的和最小测试用例表现出你所看到的行为?另外,请介绍:
- 什么是你期待
- 行为为什么你认为应该发生
- 这种行为是什么行为,你是实际上观察
- 是什么确切你正在收到的错误消息
目前,它看起来像一个非常微妙的错误在你的具体Ruby的安装。
嗯,有趣...你能粘贴原始代码吗? – khelll 2010-01-02 13:21:19