首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Logicblox中的集合

Logicblox中的集合
EN

Stack Overflow用户
提问于 2016-10-03 21:05:39
回答 1查看 78关注 0票数 0

是否可以在Logicblox中建模集合。具体来说,我希望有一个set of Integers,比如{1,4,9},并希望检查该集合是否为空集,以及某个元素是否属于该集合。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-30 16:23:59

谓词实际上是自然的模型集,所以如果您想对一个集合建模,您可以为它创建一个谓词,如本例所示:

代码语言:javascript
复制
create --unique
addblock <doc>
  my_set(x) -> int(x).
  my_set_not_empty() <- my_set(_).
  my_set_empty() <- !my_set_not_empty().
</doc>
echo 'my_set'
print my_set
echo 'my_set_empty'
print my_set_empty
echo 'my_set_not_empty'
print my_set_not_empty
echo 'adding an element'
exec '+my_set(1).'
echo 'my_set'
print my_set
echo 'my_set_empty'
print my_set_empty
echo 'my_set_not_empty'
print my_set_not_empty
close --destroy

如果要将集合建模为实体,所需的只是一个额外的键:

代码语言:javascript
复制
create --unique
addblock <doc>
  integer_set(set),integer_set:name(set:name) -> string(name).
  contains(set,integer) -> integer_set(set),int(integer).
  not_empty(set) <- contains(set,_).
  empty(set) <- !not_empty(set), integer_set(set).
</doc>
exec <doc>
  +integer_set(my_set),+integer_set:name(my_set:"my_set").
</doc>
echo "empty"
print empty
echo "not empty"
print not_empty
echo "adding elements and creating another set"
exec <doc>
  +integer_set(my_set),+integer_set:name(my_set:"other_set").
  +contains(my_set,1) <- integer_set:name(my_set:"my_set").
  +contains(my_set,4) <- integer_set:name(my_set:"my_set").
  +contains(my_set,9) <- integer_set:name(my_set:"my_set").
</doc>
echo "contains"
print contains
echo "empty"
print empty
echo "not empty"
print not_empty

close --destroy
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39840418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档