我注意到以下两个调用会产生不同的结果字符串:
# Closing quotes not indented
"""
a
"""
# Closing quotes indented
"""
a
"""
第一个调用将返回" a\n"
,而第二个调用将返回a\n
。
看起来好像缩进引号的缩进级别指示一个点,直到对于heredoc中的每一行截断前导空格。如果您有8个前导空格和4个结尾引号缩进,则最终会在结果字符串中显示4个前导空格。第一个实际字符后的字符和所有内容都不会被截断。
我没有在Elixir文档中找到有关该行为的任何文档。这是一个错误吗?
答案 0 :(得分:4)
我没有找到任何关于此的文档,但这绝对是故意作为主题
的提交根据heredoc结束的位置允许heredocs对齐。
是committed by José Valim on 20 Feb 2012,它在elixir_tokenizer
中包含一个新功能,其中包含注释:
%% Remove spaces from heredoc based on the position of the final quotes.
和一个类似于你在问题中写的那个的测试用例:
test :double_quoted_aligned_heredoc do
assert_equal "foo\nbar\nbar\n", """ <> "bar\n"
foo
bar
"""
end