我正在尝试创建一个简单的“注册”方法。
-- 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
注意:users
是set
User
编辑:pre (username not in set users.username)
对我来说是最有意义的,但这甚至都没有编译。
答案 0 :(得分:1)
看起来你需要一个“forall”。您的前提条件是要说“对于所有用户的用户名,新用户的名称不等于他们”。另一种方法是使用set comprehension生成一组现有用户名,然后说新用户名不在该组中。
如果上述语法不明显,请告诉我们。