我在使用Ruby脚本时遇到了一些麻烦,我写这篇文章是为了解压缩档案然后制作文件。
script.rb:66: syntax error, unexpected unary+, expecting '}' ...images/pages/"+ filename.to_s +".jpg', alt=''"
@fileList.each do |filename|
File.open('templates/layouts/_partials/page-' + filename.to_s + '.jade', 'w') { |file|
file.puts ".c-page\n"
file.puts " img(src='images/pages/"+ filename.to_s +".jpg', alt=''"
}
end
如果我这样做:
File.open('templates/layouts/_partials/page-' + filename.to_s + '.jade', 'w') { |file|
file.puts ".c-page\n"
file.puts " img(src='images/pages/"
file.puts filename.to_s
file.puts ".jpg', alt=''"
}
我没有得到我想要的结果,因为它每次都会打印一条新行。
答案 0 :(得分:1)
试试这个
@fileList.each do |filename|
File.open("templates/layouts/_partials/page-#{filename.to_s}.jade", 'w') do |file|
file.puts ".c-page"
file.puts " img(src='images/pages/#{filename.to_s}.jpg', alt=''"
end
end
puts
添加了一个新的行字符,因此我认为不需要第一个字符串,字符串插值比使用+
符号附加效果更好。我尝试并坚持的另一个注意事项是对单行使用{}
语法,对多行块使用do..end
。它使它更清晰,更容易阅读。
答案 1 :(得分:1)
字符串和加号之间需要空格:
pry(main)> " img(src='images/pages/"+ filename.to_s +".jpg', alt=''"
SyntaxError: unexpected unary+, expecting end-of-input
" img(src='images/pages/"+ filename.to_s +".jpg', alt=''"
这有效:
pry(main)> " img(src='images/pages/" + filename.to_s + ".jpg', alt=''"
=> " img(src='images/pages/whatever.jpg', alt=''"
或者只是使用字符串插值,正如engineermnky在评论中所建议的那样。
"string"+
被视为在字符串对象上运行一元运算符+。