我编写了 Erik Demaine (MIT) docdist8.py 的 Ruby 版本。这在 github 上作为docdist-v3.rb 可用。我遇到了两种奇怪的情况:
1) 在函数 inner_product 中有一个块注释:
Inner product between two vectors, where vectors
are repeated as dictionaries of (word, freq) pairs.
Example : inner_product({"and":3, "of":2, "the":5},
{"and":4, "in":1, "of":1, "this":2}) = 14.0
如果我用 =begin 和 =end 包裹它,没有问题,但如果我用三个双引号 """ 包裹它,我会收到如下错误:
./docdist-v3.rb:71: syntax error, unexpected tIDENTIFIER, expecting kEND
Example : inner_product({"and":3, "of":2, "the":5},
^
./docdist-v3.rb:71: syntax error, unexpected tIDENTIFIER, expecting kEND
Example : inner_product({"and":3, "of":2, "the":5},
^
./docdist-v3.rb:72: syntax error, unexpected kIN, expecting kEND
... {"and":4, "in":1, "of":1, "this":2}) = 14.0
^
./docdist-v3.rb:72: syntax error, unexpected tIDENTIFIER, expecting kEND
... {"and":4, "in":1, "of":1, "this":2}) = 14.0
^
./docdist-v3.rb:72: syntax error, unexpected tIDENTIFIER, expecting kEND
..."and":4, "in":1, "of":1, "this":2}) = 14.0
^
是否存在与 =begin 和 =end 不同的“””规则/允许条目?
2)当我使用 time 命令运行我的程序时,它会在大约 0.3 秒内执行。但是,如果我输入 require 'profile' ,则相比之下所需的时间会变得非常高 - 30 秒。因此我根本没有得到正确的输出。原始 Python 版本似乎并非如此,它只需要一点额外的时间来分析。如何在 Ruby 中运行相同的配置文件?
注意:我用来运行 Ruby 程序的两个文件是 t2.bobsey.txt 和 t3.lewis.txt。它们可在http://ocw.mit.edu/ans7870/6/6.006/s08/lecturenotes/dd_data.htm获得