因此,似乎结构概念不能具有相同类型的属性。
例如,如果我有以下内容
structure (A) {
description (blah blah)
property (prop1) {
type (Type1)
}
property (prop2) {
type (Type1)
}
}
我收到“错误:属性#prop1复制属性#prop2的类型”。我是在做错什么还是应该如何工作?我不明白为什么一个结构不能具有相同类型的两个属性。无论如何,我通过提出一个扩展原始概念的附加概念来解决了这个问题,因此类型在技术上具有不同的名称,但在功能上是相同的。但是,这有点像PITA,因为现在,当我需要一个需要多个同类型属性的结构时,我必须做出所有这些额外的概念。
答案 0 :(得分:1)
是的,您需要为每个属性使用不同的类型,因为Bixby在解析用户话语时会将每个属性的类型用于上下文。
如果您的结构将同一个类型的所有属性归为一类,则可以使用max(Many)
(documentation)来表示prop
的类型为{{1 }},并且可能包含多个值。此选项的示例用例是需要处理配方成分的胶囊。可以将所有成分汇总到一个Type1
属性中,而不必为每个属性都拥有单独的属性。
如果您的结构要求每个属性都分开,则需要为每个属性创建一个不同的ingredients
,以允许Bixby区分每个属性。此选项的示例用例是跟踪体育统计数据的胶囊。仅将篮球队的每个球员标记为type
是不够的。您还需要定义播放器的类型。这可以通过创建type(Player)
类型并将其扩展到每种类型的播放器来完成(这是您当前所做的)。
答案 1 :(得分:0)
根据您的用例,使用角色分配可能是合适的。角色的作用是具有相同基础数据的不同上下文。
例如在火车时刻表中,我可能有相同的出发和到达站列表(作为枚举)。但是,这些在上下文上是不同的。通过使用角色扮演,我可以创建一个通用的火车站概念,但可以创建两个上下文不同的角色,例如出发站和到达站的概念
借助角色角色,我可以在结构化概念中同时使用两者。
一些示例代码(摘自我的开源Bixby示例代码-https://github.com/rogerkibbe/bixby_bart_commuter)
Station.model.bxb的摘录-站点的基础
enum (Station) {
description (BART Station Names)
symbol(12th St. Oakland City Center)
symbol(16th St. Mission)
symbol(19th St. Oakland)
symbol(24th St. Mission)
symbol(Antioch)
由此,我创建了两个角色概念:
enum (SearchDepartureStation) {
description (Train Departure Station)
features {
transient
}
role-of (Station)
}
enum (SearchArrivalStation) {
description (Train Arrival Station)
features {
transient
}
role-of (Station)
}
最后,我可以在结构化概念中使用以上两者(以下摘录):
structure (TrainSchedule) {
description (Train Schedule)
property (searchDepartureStation) {
type (SearchDepartureStation)
min (Required)
max (One)
}
property (searchArrivalStation) {
type (SearchArrivalStation)
min (Required)
max (One)
}