先决条件不工作

Pre-condition not working

我正在尝试创建一个简单的 'signup' 方法。

-- 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);

我遇到的问题是前提条件。前置条件'username is unique'怎么写? (即 user.username = usernameusers 中没有 user

注意:userssetUser

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

看来您需要 "forall"。你的前提条件是 "for all of the users' usernames, the new user's name is not equal to them"。另一种方法是生成一组具有集合理解的现有用户名,然后说新用户名不在该集合中。

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