【问题标题】:Extract all elements of a set which have a certain attribute (are in relation with a certain value)提取集合中具有特定属性的所有元素(与特定值相关)
【发布时间】:2019-11-03 15:43:47
【问题描述】:

我正在尝试编写一个 Alloy 函数来检索与函数参数相关的某种类型的所有元素(让我说,它们的“字段/属性”之一具有该值)。我尝试了各种方法,都没有奏效。

有点像

fun get[a:A] : set X{
    (x.name :> a)
}

但这会返回一组 A 而我想要一组 X

【问题讨论】:

    标签: alloy


    【解决方案1】:

    你可以更简单地做到这一点:

    name.a
    

    返回在 name 下映射到 a 中元素的 X 集合。

    检查与您的版本的等效性:

    sig A { }
    sig X {
      name: set A
      }
    
    fun get [a:A] : set X{
        ((X <: name) :> a).A
    }
    
    fun get' [a:A] : set X{
        name.a
    }
    
    check {
      all a: A | get[a] = get'[a]
    }
    

    【讨论】:

      【解决方案2】:

      这行得通,希望对某人有用:

      fun get[a:A] : set X{
          ((X <: name) :> a).A
      }
      

      【讨论】:

        猜你喜欢
        • 2012-01-16
        • 2011-10-14
        • 1970-01-01
        • 2016-06-25
        • 1970-01-01
        • 1970-01-01
        • 2023-03-04
        • 2014-11-30
        • 2023-01-19
        相关资源
        最近更新 更多