Html 如何创建 宏
我有很多不同范围的数据集,我需要插入到表中.红豆杉是过度杀戮,只是为了寻找亲吻.如中所示
//format!("<tr><td>{e1}</td><td>{e2}</td></tr>") – no good, might be exprs
format!("<tr><td>{}</td><td>{}</td></tr>", e1, e2)
我想为任意数量的列简化这一过程
macro_rules! tr {
($($td:expr),*) => {
format!(concat!("<tr>", $("<td>{}</td>"),* "</tr>"), $($td),*)
}
}
tr!(e1, e2)
出现错误:try 重复一个表达式,该表达式不包含与在此深度重复匹配的语法变量
所以我try 了一个人工代码块,只是为了在第一次重复中给它变量
macro_rules! tr {
($($td:expr),*) => {
format!(concat!("<tr>", $({ $td; "<td>{}</td>" }),* "</tr>"), $($td),*)
}
}
提供错误:预期令牌:,
正确的语法是什么?
推荐答案
当您需要重复某个表达式与元变量相同的次数,但没有将其包括在表达式中时,有一个诀窍:定义一个内部宏ARM/另一个接受元变量并生成常量表达式的内部宏.这样,您就可以在检索中"使用"元变量,而不需要实际包括它:
macro_rules! tr {
(@trick $td:expr) => { "<td>{}</td>" };
($($td:expr),*) => {
format!(concat!("<tr>", $(tr!(@trick $td),)* "</tr>"), $($td),*)
}
}
在晚上,有一个更简单的方法:使用${ignore(...)}
修饰符,这正是为了做到这一点:
#![feature(macro_metavar_expr)]
macro_rules! tr {
($($td:expr),*) => {
format!(concat!("<tr>", $("<td>{}</td>", ${ignore(td)})* "</tr>"), $($td),*)
}
}
Html相关问答推荐
我需要主页按钮出现在中间
如何阻止Chromecast图标出现在HTML5视频
Angular /HTML5不会播放本地文件夹中的音频mpeg
获得一个css框,以便在页面太小时不再粘在页面的角落.
为什么我的网页底部是蓝色背景而不是渐变色?
默认情况下使用Disbale Scroll,但在单击图标后将其激活
从html文件中提取元素的Python BeautifulSoup
列表项文本在占据剩余空间之前在标记下换行
悬停表格单元格文本时,使元素的字体大小更大,同时保持表格单元格的高度不变
为什么我不能覆盖 div 的样式?
太多的 Web 视图实例导致手机过热 Swift
当浏览器宽度减小时字体大小变得太大
在 HTML 视频上环绕文本叠加
用由文本制成的边框包围内容
如何垂直平移一个元素,使其新位置位于另外两个元素之间?
CSS 网格跨度行到所有行
将图像高度调整到容器 div 中而不使其高度增加
父背景仅在子元素中可见
在 SQL 中合并 HTML 表中的单元格
如何让 Reindeer 居中
实用课程推荐
我有很多不同范围的数据集,我需要插入到表中.红豆杉是过度杀戮,只是为了寻找亲吻.如中所示
//format!("<tr><td>{e1}</td><td>{e2}</td></tr>") – no good, might be exprs
format!("<tr><td>{}</td><td>{}</td></tr>", e1, e2)
我想为任意数量的列简化这一过程
macro_rules! tr {
($($td:expr),*) => {
format!(concat!("<tr>", $("<td>{}</td>"),* "</tr>"), $($td),*)
}
}
tr!(e1, e2)
出现错误:try 重复一个表达式,该表达式不包含与在此深度重复匹配的语法变量
所以我try 了一个人工代码块,只是为了在第一次重复中给它变量
macro_rules! tr {
($($td:expr),*) => {
format!(concat!("<tr>", $({ $td; "<td>{}</td>" }),* "</tr>"), $($td),*)
}
}
提供错误:预期令牌:,
正确的语法是什么?
推荐答案
当您需要重复某个表达式与元变量相同的次数,但没有将其包括在表达式中时,有一个诀窍:定义一个内部宏ARM/另一个接受元变量并生成常量表达式的内部宏.这样,您就可以在检索中"使用"元变量,而不需要实际包括它:
macro_rules! tr {
(@trick $td:expr) => { "<td>{}</td>" };
($($td:expr),*) => {
format!(concat!("<tr>", $(tr!(@trick $td),)* "</tr>"), $($td),*)
}
}
在晚上,有一个更简单的方法:使用${ignore(...)}
修饰符,这正是为了做到这一点:
#![feature(macro_metavar_expr)]
macro_rules! tr {
($($td:expr),*) => {
format!(concat!("<tr>", $("<td>{}</td>", ${ignore(td)})* "</tr>"), $($td),*)
}
}
Html相关问答推荐
我需要主页按钮出现在中间
如何阻止Chromecast图标出现在HTML5视频
Angular /HTML5不会播放本地文件夹中的音频mpeg
获得一个css框,以便在页面太小时不再粘在页面的角落.
为什么我的网页底部是蓝色背景而不是渐变色?
默认情况下使用Disbale Scroll,但在单击图标后将其激活
从html文件中提取元素的Python BeautifulSoup
列表项文本在占据剩余空间之前在标记下换行
悬停表格单元格文本时,使元素的字体大小更大,同时保持表格单元格的高度不变
为什么我不能覆盖 div 的样式?
太多的 Web 视图实例导致手机过热 Swift
当浏览器宽度减小时字体大小变得太大
在 HTML 视频上环绕文本叠加
用由文本制成的边框包围内容
如何垂直平移一个元素,使其新位置位于另外两个元素之间?
CSS 网格跨度行到所有行
将图像高度调整到容器 div 中而不使其高度增加
父背景仅在子元素中可见
在 SQL 中合并 HTML 表中的单元格
如何让 Reindeer 居中
实用课程推荐