gpt4 book ai didi

dart - 我可以动态应用 Dart 的字符串插值吗?

转载 作者:行者123 更新时间:2023-12-03 00:25:40 24 4
gpt4 key购买 nike

(来自 Tristan McNab 的 Dart 讨论邮件列表)

我正在尝试构建一个服务器端 MVC 框架并基于模板等生成 View ,我想知道是否可以动态应用 Dart 的字符串插值。例如,这将是我的 View 模板:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>${ViewData["Title"]}</title>
<link href="/Content/css/site.css" rel="stylesheet" />
</head>
<body>
<h1>${ViewData["Title"]}</h1>
<div id="container">
<p>Hello world!</p>
</div>
</body>
</html>

我想使用以下方法应用 ViewData 变量:

static String applyViewData(String html, Map ViewData) {
// apply interpolation here
}

目前这可能吗?我对 API 的搜索表明事实并非如此。

最佳答案

(比尔·黑塞发布)

通过将字符串文字包装在一个函数中,该函数将上下文作为一个参数,你可以有一个 Function : context -> String 你可以传递而不是字符串。如果你需要使用一些字符串对这些对象进行操作,例如连接,您可以实现这些对封装此类型的类进行操作(“提升”它们)。这似乎是一种直接给出字符串文字的方法位置,并给出您想要在另一个中插入的数据。

字符串插值总是动态发生,每次文字使用,并且数据可以轻松地从参数到函数而不是来自词汇上下文。

例如:

Function MyTemplate() {
return (Context context) {
return "<table><tr><td class=${context.leftColumnClass}>Red Sox</td><td>${context.data}</td></tr></table>";
}
}

...

var templateHere = MyTemplate();

...

var output = templateHere(context);

您还可以跳过间接级别并直接创建

String FillMyTemplate(Context context) => '''
<html><head><title>$context.title</title></head>
''';

并在需要模板的地方使用 FillMyTemplate。

关于dart - 我可以动态应用 Dart 的字符串插值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11886796/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com