我有一组目标,每个目标基本上都是相同的,除了每个目标包含一个特定的模式集,在其上执行其任务.我想将这些目标折叠成一个"可重用"的目标,而是将一组文件"作为参数".
例如,这个
<target name="echo1">
<foreach item="File" property="fn">
<in>
<items>
<include name="*.config"/>
</items>
</in>
<do>
<echo message="${fn}" />
</do>
</foreach>
</target>
<target name="echo2">
<foreach item="File" property="fn">
<in>
<items>
<include name="*.xml"/>
</items>
</in>
<do>
<echo message="${fn}" />
</do>
</foreach>
</target>
<target name="use">
<call target="echo1"/>
<call target="echo2"/>
</target>
Run Code Online (Sandbox Code Playgroud)
将被替换为
<patternset id="configs">
<include name="*.config"/>
</patternset>
<patternset id="xmls">
<include name="*.xml"/>
</patternset>
<target name="echo">
<foreach item="File" property="fn">
<in>
<items>
<patternset refid="${sourcefiles}"/>
</items>
</in>
<do>
<echo message="${fn}" />
</do>
</foreach>
</target>
<target name="use">
<property name="sourcefiles" …Run Code Online (Sandbox Code Playgroud) 在链接http://www.ccs.neu.edu/home/ryanc/macro-stepper/tutorial.html上有关于使用宏步进器的说明.
但是,当我要尝试它时,我无法在非零的定义中得到myor的第二次扩展?功能,只有第一个.另外,我没有按钮"上一学期"和"下一学期".
所以我的问题是:我如何配置宏步进器以获得第二次扩展,就像在教程中一样?
我试着写一个宏并执行如下.但它未能执行.
(defmacro times_two (var) (* 2 var))
(times_two '(+ 1 2))
Run Code Online (Sandbox Code Playgroud)
在我的想象中,我认为扩张将是(*2(+ 1 2)).并且在执行之后,结果将是6.但是失败了.
我不知道为什么.我阅读了Emacs lisp手册,但我仍然无法理解它们.我想知道在构建扩展时究竟是什么步骤.口译员做了什么?
这种"身份"功能应满足以下2个属性:
identity $(identity a\ b c\ d)
# (Expected output:)
# a b
# c d
Run Code Online (Sandbox Code Playgroud)
并且,给定以下'argv_count'函数:
argv_count () { echo "argv_count('$@'):$#"; }
argv_count $(identity a\ b c\ d)
# (Expected output:)
# argv_count('a b c d'):2
Run Code Online (Sandbox Code Playgroud)
如果需要,可以在测试中引入额外的报价.
如下所示的简单候选者未能通过第二次测试:
identity () { for arg in "$@"; do echo "$arg"; done; }
Run Code Online (Sandbox Code Playgroud)
cat不是正确的解决方案,因为它是相对于stdin | stdout的标识函数.
我有以下代码:
#define UNIT_BASIC_UNIT_DEF2 (name) UNIT_BASIC_ ## name
#define UNIT_UNIT_TYPE_DEF2 (basic_type, name) UNIT_ ## basic_type ## _ ## name
#define UNIT_BASIC_UNIT_CLASS_NAME2(name) CUnit ## name
#define UNIT_UNIT_TYPE_CLASS_NAME2(basic_type, name) CUnit ## basic_type ## _ ## name
#define UNIT_BASIC_UNIT_DEF (name) UNIT_BASIC_UNIT_DEF2(name)
#define UNIT_UNIT_TYPE_DEF (basic_type, name) UNIT_UNIT_TYPE_DEF2 (basic_type, name)
#define UNIT_BASIC_UNIT_CLASS_NAME(name) UNIT_BASIC_UNIT_CLASS_NAME2(name)
#define UNIT_UNIT_TYPE_CLASS_NAME(basic_type, name) UNIT_UNIT_TYPE_CLASS_NAME2(basic_type, name)
#define UNIT_IMPLEMENT_UNIT_TYPE(basic_type, name) \
CUnitAbstract& UNIT_UNIT_TYPE_CLASS_NAME(basic_type, name)::dup(){\
UNIT_UNIT_TYPE_CLASS_NAME(basic_type, name) * n = new UNIT_UNIT_TYPE_CLASS_NAME(basic_type, name)(this->value);\
return *n;\
}\
CUnitAbstract& UNIT_UNIT_TYPE_CLASS_NAME(basic_type, name) ::operator+(CUnitAbstract& value){\
DYNAMIC_ASSERT(dynamic_cast< UNIT_BASIC_UNIT_CLASS_NAME(basic_type) *>(&value) != NULL);\ …Run Code Online (Sandbox Code Playgroud) 我正在尝试在bash中扩展一个数组:
FILES=(2009q{1..4})
echo ${FILES[@]}
echo ${FILES[@]}.zip
Run Code Online (Sandbox Code Playgroud)
输出是:
2009q1 2009q2 2009q3 2009q4
2009q1 2009q2 2009q3 2009q4.zip
Run Code Online (Sandbox Code Playgroud)
但是如何在echo 2009q{1..4}.zip扩展中扩展最后一行,以便最后一行看起来像:
2009q1.zip 2009q2.zip 2009q3.zip 2009q4.zip
Run Code Online (Sandbox Code Playgroud)
...但是使用数组FILES?
我正在从黑名单文件中读取字符串,其中包含应删除的文件和文件夹.它适用于简单文件名,但不适用于通配符.
例如,如果我在shell上键入,rm -rf !(abc|def)它将删除除这两个文件之外的所有文件.将此字符串!(abc|def)放入黑名单时,它不起作用,因为字符串不会被评估.
所以我尝试使用eval,但它没有按预期工作.
#!/bin/bash
# test pattern (normally read from blacklist file)
LINE="!(abc|def)"
# output string
echo "$LINE"
# try to expand this wildcards
eval "ls $LINE"
# try with subshell
( ls $LINE )
Run Code Online (Sandbox Code Playgroud)
我怎样才能使这个工作?
我正在寻找创建一个可以在C中执行此操作的Rust宏.
#define V(a,b,c,d) 0x##a##b##c##d
Run Code Online (Sandbox Code Playgroud)
在调用时:
V(7B,B0,B0,CB)
Run Code Online (Sandbox Code Playgroud)
在编译时将简单地在代码中放置以下十六进制数:
0x7BaB0bB0cCDd
Run Code Online (Sandbox Code Playgroud)
尝试这样的事情:
macro_rules! gen_hex_num {
($a:expr , $b:expr , $c:expr , $d:expr) => (
0x($a)a($b)b($c)c($d)d
)
}
Run Code Online (Sandbox Code Playgroud)
产生错误:
error: macro expansion ignores token `a` and any following
--> src/main.rs:3:16
|
3 | 0x($a)a($b)b($c)c($d)d
| ^
|
note: caused by the macro expansion here; the usage of `gen_hex_num!` is
likely invalid in expression context
Run Code Online (Sandbox Code Playgroud)
文档和其他问题似乎不包括这种情况.
有没有减少ExpansionTile头的高度,因为它不具有height属性的方式,搜索后,我发现这在GitHub上的自定义颜色,但我不能改变它,除了它给我的错误说“添加height属性未为类 AnimationController 定义驱动器”
在 ExpansionPanelList 的 ListTile 中,试验已经给出为向下箭头,并且当展开 ListTile 时,箭头变为向上箭头。
然而,它的颜色很暗。我添加了尾随:图标(等等)。这只是在标题和默认的尾随按钮(向下箭头)之间添加了一个图标。
如何更改默认尾随按钮的颜色,同时保持其多功能性(当框展开时它会变成向上箭头)?
我尝试将 ListTile 包装在主题中,这是有人推荐的,但向下箭头的颜色没有改变,如下所示:
Widget _buildPanel() {
return ExpansionPanelList.radio(
initialOpenPanelValue: 0,
children: _data.map<ExpansionPanelRadio>((Item item) {
return ExpansionPanelRadio(
backgroundColor: Colors.black,
canTapOnHeader: true,
value: item.id,
headerBuilder: (BuildContext context, bool isExpanded) {
return Theme(
data: Theme.of(context)
.copyWith(unselectedWidgetColor: Colors.white),
child: ListTile(
title: Text(item.headerValue,
...
Run Code Online (Sandbox Code Playgroud)