Ruby 2.7.2 单引号字符串拼接常量报SyntaxError错误如何解决?
单引号字符串拼接常量的实现方案(Ruby 2.7.2)
报错原因说明
syntax error, unexpected unary+, expecting 'end' (SyntaxError)报错和单引号本身无关,该报错通常由代码换行格式问题触发:如果把拼接用的+运算符单独放在新行开头,Ruby会将其识别为一元运算符而非二元拼接运算符,就会抛出该语法错误。你给出的示例代码本身语法合法,仅需调整格式即可正常运行。
合法实现方案
以下方案均完全使用单引号字符串完成拼接,符合业务场景要求:
方案1:+运算符拼接(最简便)
确保拼接运算符+前后保留空格,不要单独放在行首即可:
NAME = "Jane" def a_function s = 'Hi ' + NAME + '!' puts s end
方案2:使用String#concat方法
避免使用+运算符,适合多段内容拼接的场景:
NAME = "Jane" def a_function s = 'Hi '.concat(NAME).concat('!') puts s end
方案3:数组join拼接
适合拼接内容段较多、后续需要调整顺序的场景:
NAME = "Jane" def a_function s = ['Hi ', NAME, '!'].join puts s end
注意事项
如果常量定义在类/模块作用域下,方法内访问需要补充作用域前缀,例如self.class::NAME,避免触发常量未找到错误。
内容的提问来源于stack exchange,提问作者sara lance
相关产品推荐
相关产品推荐

