先决条件不工作
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 = username
中 users
中没有 user
)
注意:users
是 set
的 User
编辑:pre (username not in set users.username)
对我来说最有意义,但这甚至无法编译。
看来您需要 "forall"。你的前提条件是 "for all of the users' usernames, the new user's name is not equal to them"。另一种方法是生成一组具有集合理解的现有用户名,然后说新用户名不在该集合中。
如果上面的语法不明显,请告诉我们。
我正在尝试创建一个简单的 '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 = username
中 users
中没有 user
)
注意:users
是 set
的 User
编辑:pre (username not in set users.username)
对我来说最有意义,但这甚至无法编译。
看来您需要 "forall"。你的前提条件是 "for all of the users' usernames, the new user's name is not equal to them"。另一种方法是生成一组具有集合理解的现有用户名,然后说新用户名不在该集合中。
如果上面的语法不明显,请告诉我们。