Ruby 怎样才能';看跌期权';停止执行绞刑命令?

Ruby 怎样才能';看跌期权';停止执行绞刑命令?,ruby,Ruby,我正在试用“电子表格”宝石,发现了一些我以前从未遇到过的东西: book = Spreadsheet.open "public/tickers.xls" # => #<Spreadsheet::Excel::Workbook:0x5c16420> puts book.worksheet(0) # => #Spreadsheet::Excel::Worksheet:0x000000019494a8 book.worksheet(0) # => This comma

我正在试用“电子表格”宝石,发现了一些我以前从未遇到过的东西:

book = Spreadsheet.open "public/tickers.xls"
# => #<Spreadsheet::Excel::Workbook:0x5c16420>

puts book.worksheet(0)
# => #Spreadsheet::Excel::Worksheet:0x000000019494a8

book.worksheet(0)
# => This command hangs for a long time.
book=Spreadsheet.open“public/tickers.xls”
# => #
工作表(0)
#=>#电子表格::Excel::工作表:0x000000019494a8
工作表(0)
#=>此命令挂起很长时间。

第二个命令和第三个命令之间的区别只是
put
语句。这将如何改变命令立即返回而不是挂起的效果?

无论调用
book.worksheet(0)
的结果是什么,它都有一个非常有效的
检查
方法。这是一种可能性

工作表#inspect
循环遍历所有实例变量并连接它们的字符串表示,因此,如果它有大量实例变量,或者其中一个实例变量指向具有巨大字符串表示(或非常慢的
to_s
)方法的对象,则需要很长时间

OTOH,
工作表
没有
to_s
方法,因此它继承了
对象
的方法,该方法速度非常快,因为它只打印内存地址和类