我有两个本地值:a
和b
。我需要一个包含b
a
份副本的numlist。下面的工作都没有(我认为我理解的第一个,但我不理解第二个,因为我认为display
扩展宏函数负责smcl
的所有处理。
. numlist "{dup `b':`a'}"
invalid numlist
. local x: display "{dup `b':`a'}"
. numlist "`x'"
invalid numlist
如何创建b
的{{1}}次复制的数量列表?
答案 0 :(得分:2)
SelectedItem
支持<DataGridTemplateColumn Header="Unit">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate DataType="local:ResultModel">
<ComboBox
DisplayMemberPath="Name"
ItemsSource="{Binding Path=Units}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
语法,但下划线是必不可少的,任何花括号(大括号)都是多余的或困难的来源。这更接近一些SMCL语法,但与它完全不同。
您也可以使用SMCL语法。
这是一些技巧:
第一对示例显示我们需要复制一个结束(或前导)空格以及任何所需的文本;否则我们得不到我们想要的东西。
display
我们也可以将结果放在本地宏中。幸好。如果我们解析它,那么无知的空格将被忽略。请注意,就我而言,_dup()
也会显示与问题无关的其他内容。
. di _dup(10) "42 "
42 42 42 42 42 42 42 42 42 42
. di _dup(10) "42"
42424242424242424242
这也有效:
macro list
这仍然存在使用. local wanted : di _dup(10) "42 "
. di "`wanted'"
42 42 42 42 42 42 42 42 42 42
. tokenize "`wanted'"
. mac li
_10: 42
_9: 42
_8: 42
_7: 42
_6: 42
_5: 42
_4: 42
_3: 42
_2: 42
_1: 42
_wanted: 42 42 42 42 42 42 42 42 42 42
原始语法出了什么问题的问题。我的解释是. di "{dup 10:42 }"
42 42 42 42 42 42 42 42 42 42
. local wanted : di "{dup 10:42 }"
. di "`wanted'"
42 42 42 42 42 42 42 42 42 42
只是不了解SMCL指令,隐藏SMCL的解决方法并不比这里的任何解决方案容易。没有理由以任何方式使用numlist
,否则可以实现元素的重复。
答案 1 :(得分:1)
我假设短语“包含b个副本的numlist”是指:您有一些本地宏a
,您希望将其复制b
次并将输出存储为列表(另一个本地宏)。
以下是数字a
...
local a = 4
local b = 6
local c
forval i = 1/`b' {
local c `c' `a'
}
di "`c'"
4 4 4 4 4 4
...和字符串a
:
local a = "copy_me!"
local b = 6
local c = ""
forval i = 1/`b' {
local c `c' `a'
}
di "`c'"
copy_me! copy_me! copy_me! copy_me! copy_me! copy_me!
Stata中几乎所有基本内容的完美材料,包括使用本地宏:A little bit of Stata programming goes along way (by CF Baum)(针对您的案例,第5页)。
答案 2 :(得分:0)
好的,再次尝试一下,这似乎有效:
. local c = ""
. forvalues i = 1/`b' {
. local c = "`c'" + " `a'"
. }
. numlist "`c'"
我仍然对别人的答案感兴趣。