2010-08-11 46 views
0

鑑於下面的代碼片斷:Jruby行號問題?

hash = {     # 1 
    (line = __LINE__) => # 2 
    lambda { x }   # 3 
} 

在JRuby做一些檢查:

puts line # >> 2 
puts hash[line].inspect >> #<Proc:[email protected]/tmp/test.rb:2> 

似乎從標準MRI不同:

puts line # >> 2 
puts hash[line].inspect >> #<Proc:[email protected]/tmp/test.rb:3> 

體proc似乎是線 in mri,而在jruby中,它是行 ...是這個a錯誤?任何解決方法?

+0

爲什麼這對你很重要? – jtbandes 2010-08-11 02:37:54

+0

最有可能的一個錯誤。 JRuby在這裏和那裏確實有一些框架沒有完全一致。大多數時候他們足夠小,不會注意到。如果可以的話,幫助提出一些他們錯誤的測試用例(應該有幾個,也可以嘗試一些block dispatch),並將它們發佈到http://bugs.jruby.org/。 – 2010-08-11 17:58:27

+0

@jtbandes:它困擾我的原因是我正在使用ruby_parser實現serializable_proc(http://github.com/ngty/serializable_proc),它執行靜態代碼分析,並且我需要Proc#檢查生成的行號以確定哪一行我想處理,因爲jruby給我不準確的行號,SerializableProc不能按預期工作。無論如何,SerializableProc可能沒有實際用途,但我想這只是我有趣的項目之一,看看我可以推動序列化proc的想法。 – ngty 2010-08-15 02:06:11

回答

0

如果它不同於MRI它可能被認爲是一個錯誤