前提条件不起作用

时间:2017-12-28 12:55:56

标签: vdm++

我正在尝试创建一个简单的“注册”方法。

-- Creates a new account
public signup: String * String ==> ()
signup(username, password) == (

    -- create user
    dcl user: User := new User(username, password);

    -- add user
    users := users union {user};
)
pre (let u in set users in u.username <> username);

我遇到的问题是前提条件。如何写前置条件'用户名是唯一的'? (即user users

中没有user.username = username

注意:usersset

User

编辑:pre (username not in set users.username)对我来说是最有意义的,但这甚至都没有编译。

1 个答案:

答案 0 :(得分:1)

看起来你需要一个“forall”。您的前提条件是要说“对于所有用户的用户名,新用户的名称不等于他们”。另一种方法是使用set comprehension生成一组现有用户名,然后说新用户名不在该组中。

如果上述语法不明显,请告诉我们。