Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带引号内变量的Ruby格式字符串_Ruby_String_Formatting_String Formatting_String Interpolation - Fatal编程技术网

带引号内变量的Ruby格式字符串

带引号内变量的Ruby格式字符串,ruby,string,formatting,string-formatting,string-interpolation,Ruby,String,Formatting,String Formatting,String Interpolation,如果我这样做 (注意第二个模板字符串中类周围的引号-这是两个Ruby代码块之间的唯一区别)。我如何让它工作?换句话说,我如何生成以下内容 class='btn提交按钮某些类' 我不相信我可以只使用插值,因为有时我需要传递其他变量。换句话说,我做不到 ArgumentError: malformed format string - %' 因为有时我希望重用相同的字符串“模板”,但传入其他变量,以生成如下字符串: class='btn提交按钮其他类' 或 class='btn提交按钮某些第三类

如果我这样做

(注意第二个模板字符串中类周围的引号-这是两个Ruby代码块之间的唯一区别)。我如何让它工作?换句话说,我如何生成以下内容

class='btn提交按钮某些类'

我不相信我可以只使用插值,因为有时我需要传递其他变量。换句话说,我做不到

ArgumentError:
  malformed format string - %'
因为有时我希望重用相同的字符串“模板”,但传入其他变量,以生成如下字符串:

class='btn提交按钮其他类'

class='btn提交按钮某些第三类'

从:

格式(格式\字符串[,参数…])→ 字符串
[…]
对于更复杂的格式,Ruby支持按名称引用<代码>%s样式使用格式样式,但
%{name}
样式不使用格式样式

文档不是很清楚,但是当您使用
%
表单时,它希望看到
%s
,其中
名称
是散列键,
s
是格式类型:
s
表示字符串,
d
表示数字。。。如果你说:

additional_classes = 'some-class'
"class='btn submit-button #{additional_classes}'"
从:

格式(格式\字符串[,参数…])→ 字符串
[…]
对于更复杂的格式,Ruby支持按名称引用<代码>%s样式使用格式样式,但
%{name}
样式不使用格式样式

文档不是很清楚,但是当您使用
%
表单时,它希望看到
%s
,其中
名称
是散列键,
s
是格式类型:
s
表示字符串,
d
表示数字。。。如果你说:

additional_classes = 'some-class'
"class='btn submit-button #{additional_classes}'"

您的格式字符串缺少。字段类型说明符在格式字符串中是必需的

我不清楚为什么第一个示例没有引发错误,因为缺少必需的字段类型说明符。这可能是一个bug,或者我完全误读了文档

但是,我不清楚为什么你会考虑这个例子:

template_string = "class='btn submit-button %{additional_classes}'"
#--------------------------------------------^------------------^
由于格式字符串必须具有字段类型说明符,
%
(字段名除外)后面的唯一字符是
,因此将其解释为字段类型说明符。由于
'
不是合法的字段类型,
格式
会引发一个错误,它会明确告诉您它将
'
解释为格式字符串的一部分

由于要格式化字符串,应使用
s
(字符串)字段类型说明符:

ArgumentError: malformed format string - %'
                                          ↑

您的格式字符串缺少。字段类型说明符在格式字符串中是必需的

我不清楚为什么第一个示例没有引发错误,因为缺少必需的字段类型说明符。这可能是一个bug,或者我完全误读了文档

但是,我不清楚为什么你会考虑这个例子:

template_string = "class='btn submit-button %{additional_classes}'"
#--------------------------------------------^------------------^
由于格式字符串必须具有字段类型说明符,
%
(字段名除外)后面的唯一字符是
,因此将其解释为字段类型说明符。由于
'
不是合法的字段类型,
格式
会引发一个错误,它会明确告诉您它将
'
解释为格式字符串的一部分

由于要格式化字符串,应使用
s
(字符串)字段类型说明符:

ArgumentError: malformed format string - %'
                                          ↑
ArgumentError: malformed format string - %'
                                          ↑
template_string = "class=btn 'submit-button %<additional_classes>s'"
#                                                                ↑

format(template_string, additional_classes: 'some-class')
#=> "class=btn 'submit-button some-class'"
#                             ↑↑↑↑↑↑↑↑↑↑↑
template_string = "class=btn 'submit-button %{additional_classes}'"
#                                            ↑                  ↑

format(template_string, additional_classes: 'some-class')
#=> "class=btn 'submit-button some-class'"
#                             ↑↑↑↑↑↑↑↑↑↑↑