为什么机架响应体不是字符串?

他们的文档中的经典hello world示例,

class HelloWorld def call(env) return [200, {}, ["Hello world!"]] end end 

我的问题是为什么第三个值是[Hello world!“],而不是”Hello world“?来自他们的doc,

Body必须响应每个,并且只能产生String值。 Body本身不应该是String的实例,因为这将在Ruby 1.9中破坏。

为什么身体需要对每个人做出回应? 在什么情况下重要?

我认为机架起源于python的wsgi。 以下是python的解释: http : //www.python.org/dev/peps/pep-3333/#buffering-and-streaming

从句子判断The Body itself should not be an instance of String, as this will break in Ruby 1.9. ,我假设响应的最后一个元素必须是一个Enumerable 。 由于String在1.9中停止包含此模块,因此您需要某种实现它的集合。

顺便说一句:你好世界的例子往往不是很好,无法弄清楚为什么某些东西以某种方式完成,它们太琐碎了。