假设我有
combo(["A","B","C","D"])
如何选择项目B.是否有像selectIndex(2)或selectItem(“B”)这样的属性?
我找不到这样的财产。
答案 0 :(得分:1)
我假设你有一个像这样声明的数据类型:
data C = combo(list[str] items);
和这样的值(与你的问题对齐):
rascal>c = combo(["A","B","C","D"]);
C: combo(["A","B","C","D"])
鉴于此,您可以通过多种方式获得列表中的第二项。如果您为combo
中保存的数据指定了字段名称(上面是items
),您可以这样说(记住Rascal中的列表是0索引的):
rascal>c.items[1];
str: "B"
如果你没有给它一个名字,但又不想这样做,你也可以使用匹配来做到这一点:
rascal>if (combo(l) := c) println(l[1]);
B
变量l
将绑定到combo
内的列表;然后在if
内可以使用这个新变量。当然,在这两种情况下,您都希望确保列表足够长,因此在尝试读取第二个元素时不会出错。您还可以执行以下操作,它使用嵌套列表匹配:
rascal>if (combo([s1,s2,s*]) := c) println(s2);
B
在这种情况下,s1
将在列表的第一个元素中找到,s2
到第二个元素,s
到任意内容(0或更多,这是{ {1}}表示以下内容。因为只有在*
中保存的列表长度至少为2时才会匹配,因此您无需单独检查。
答案 1 :(得分:0)
默认情况下,第一个条目看起来是硬连线:https://github.com/cwi-swat/rascal/blob/master/src/org/rascalmpl/library/vis/figure/interaction/swtwidgets/Combo.java#L40
因此,选择所需项目的唯一方法是使用您想要选择的第一项创建组合。