我正在MimeTypes
类中编写一个迭代内容的方法,并创建一个Hash
扩展名作为键,mime类型作为值。这是我的rspec片段。
let(:mime_content) do
<<-FILE_CONTENT
# Mime type extension
image/png png
image/jpeg jpeg jpg jpe
FILE_CONTENT
end
let(:mime_types) { WebServer::MimeTypes.new(mime_content) }
我不确定如何迭代文本块。我不确定<<-FILE_CONTENT
是做什么的。我假设它正在创建一个文本块并将其分配给mime_content
。请帮忙。
答案 0 :(得分:1)
您可以像这样使用let():
let(:var_name) { "some string" }
这相当于:
let(:var_name) do
"some string"
end
Ruby还有一个名为Heredoc的Perl功能,允许你做这样的事情:
text = <<END_OF_STRING
hello world
goodbye mars
help
get lost
END_OF_STRING
文本将包含字符串:
"hello world\ngoodbye mars\nhelp\nget lost\n"
Heredoc sytnax允许你做一些棘手的事情,比如:
puts(<<END_OF_TEXT)
hello world
goodbye mars
END_OF_TEXT
没有人真正知道你可以在代码中插入<<SOME_UNIQUE_ID
所有棘手的地方,所以Heredocs可能会让人很困惑。
在您的示例中,显然正在使用Heredoc语法在块内创建多行字符串。通常,匹配的结束终止符必须单独在一行上而不是缩进。前面的短划线<<-FILE_CONTENT
表示匹配的终结符将缩进。
您还可以在标识符周围放置单引号,以创建单引号字符串:
<<'FILE_CONTENT'
就个人而言,我会写这样的例子:
text =<<'FILE_CONTENT'
blah
blah
blah
FILE_CONTENT
let(:mime_content) { text }
我不知道如何迭代文本块。
您想如何迭代文本块?按性格?用言语?通过判刑?按行?按段落?有关各种方法,请参阅String类。