Ruby中‘<<~’的名称及工作原理是什么?
Ruby 里的
<<~ 语法解析 这是 Ruby 2.3 及以后版本加入的波浪 heredoc(squiggly heredoc),属于多行字符串定义语法 heredoc 的变体,核心作用是自动移除内容里的前导缩进,让代码排版更规整。
关键区别
- 和普通 heredoc(
<<)比:它会自动去掉内容中与结束标记缩进量匹配的前导空白 - 和允许结束标记缩进的
<<-比:<<-只放宽结束标记的缩进要求,但不会处理内容的缩进;<<~则同时支持结束标记缩进,还会清理内容的前导空白
实际示例
你的代码里:
sentence = <<~ LOTSOFWORDS this is an example of the thing initialising a variable, how else does this work? LOTSOFWORDS
如果内容带缩进的场景下,效果更明显:
def show_info info = <<~INFO 这是一段缩进的文本 使用<<~后,前导缩进会被自动去除 INFO puts info end show_info # 输出结果: # 这是一段缩进的文本 # 使用<<~后,前导缩进会被自动去除
名称提示
你搜不到是因为它的标准叫法是 squiggly heredoc(波浪 heredoc),或者直接称“带缩进去除的 heredoc”。它和 shovel 操作符(<<)完全是两回事:shovel 是用来给数组、字符串等对象追加内容的操作符,而 heredoc 是定义多行字符串的语法。
内容的提问来源于stack exchange,提问作者BasMan
相关产品推荐
相关产品推荐

