Flutter Dart:如何强制变量上的字符串插值
我有一个变量,它包含一个带有插值变量的字符串。在下面的代码中,该变量是template。当我将这个变量传递给generateString函数时,我想对它应用字符串插值,因为插值变量所需的值仅在generateString函数中可用Flutter Dart:如何强制变量上的字符串插值,flutter,dart,Flutter,Dart,我有一个变量,它包含一个带有插值变量的字符串。在下面的代码中,该变量是template。当我将这个变量传递给generateString函数时,我想对它应用字符串插值,因为插值变量所需的值仅在generateString函数中可用 void main() { String template = '<p>\${name}</p>'; var res = generateString(template); } generateString(template) {
void main() {
String template = '<p>\${name}</p>';
var res = generateString(template);
}
generateString(template) {
var name = 'abc';
print(template);
return template;
}
void main(){
字符串模板=“\${name}”;
var res=发电成本(模板);
}
生成约束(模板){
变量名称='abc';
打印(模板);
返回模板;
}
问题是,当我在generateString fn中打印并返回模板时,我得到的是${name}
,而不是abc
。有没有一种方法可以明确地告诉省道进行字符串插值
我是个新手。我不知道这是否可能实现。请建议我怎么做
编辑:根据其他用户的输入,我想澄清一下所呈现的场景。模板变量的值不是字符串文字。作为用户输入,我从用户界面中获取。为了简化代码,我在这里将其显示为字符串文本。此外,请考虑我的方案中名称和模板不在同一范围内。 < P> Walter White。
您必须将变量name
定义为全局变量,这样它就可以在这里为您“烹饪”字符串
您必须将变量
name
定义为全局变量,以便它可以为您“烹饪”字符串我没有完全理解您的问题,也许这会有所帮助
void main() {
print(generateString('abc')); //<p>abc</p>
}
generateString(String template) {
return r"<p>" "$template" r"</p>";
}
void main(){
打印(generateString('abc');//abc
}
generateString(字符串模板){
返回r“”$template“r””;
}
我没有完全理解你的问题,也许这会有所帮助
void main() {
print(generateString('abc')); //<p>abc</p>
}
generateString(String template) {
return r"<p>" "$template" r"</p>";
}
void main(){
打印(generateString('abc');//abc
}
generateString(字符串模板){
返回r“”$template“r””;
}
如果模板和变量在同一范围内,它将按预期工作
// evaluate variable inside ${}
var sport = 'basketball';
String template = 'I like <p>${sport}</p>';
print(template);
//计算${}内的变量
var sport=‘篮球’;
字符串模板='I like${sport}';
打印(模板);
如果模板和变量在同一范围内,它将按预期工作
// evaluate variable inside ${}
var sport = 'basketball';
String template = 'I like <p>${sport}</p>';
print(template);
//计算${}内的变量
var sport=‘篮球’;
字符串模板='I like${sport}';
打印(模板);
到目前为止,其他答案都是错误的
字符串插值(查找$等)仅在从源代码编译到内存中的值时发生。如果这个字符串反过来也有$,它就不再特别了
通过原始编译步骤触发插值是不可能的。您可以编写一个模板系统,在值中查找类似于
{{name}
的内容,并将其替换为name
的当前值。到目前为止,其他答案都是错误的
字符串插值(查找$等)仅在从源代码编译到内存中的值时发生。如果这个字符串反过来也有$,它就不再特别了
通过原始编译步骤触发插值是不可能的。您可以编写一个模板系统,在值中查找类似
{{name}
的内容,并将其替换为当前值name
您的模板应位于“generateString”内,然后传递参数“name”。现在,您的generateString绝对不会返回与您作为参数传递的内容完全相同的内容。您的模板应该位于“generateString”中,然后传递参数“name”。现在,generateString绝对不会返回与您作为参数传递的内容完全相同的内容。感谢您解释为什么字符串插值在这种情况下不起作用。感谢您解释为什么字符串插值在这种情况下不起作用。不,这不起作用:模板正在作为编译的结果进行处理。这不是OP想要的。不,这不起作用:模板是编译的结果。这不是OP想要的。