[英]Should Users be class or arrays of structures?
我无法理解我是否以正确的方式编写代码。 我申请了签证。
main内部的代码:
User user = new User(database);
user.getUserByName("admin");
用户类别:
class User
{
string login;
string password;
//....
void getUserByName(string login)
{
// sql request here
this.login = row[1].coerce!string;
this.password = row[2].coerce!string;
}
//...
}
类实例将存活多长时间? 例如,有3个用户访问了我的站点:David,Jow,Mike,因此getUserByName
将被调用3次。
user.getUserByName("David");
user.getUserByName("Jow");
user.getUserByName("Mike");
这是否意味着对于每个新的日志记录用户类字段, login
和password
都会在我的代码中被覆盖? 好像是 但这好吗? 还是我有这样的问题:
例如,如果class实例中的字段由David
初始化,然后第二个用户登录并且Jow
将更改该字段?
我决定检查一下我的想法。 并做了:
void getUserByName(string login)
{
writeln("login before: ", login);
Prepared prepared = prepare(database.connection, `SELECT id, login, password, usergroup from users WHERE login=?`);
Thread.sleep(1.seconds); // pause till new getUserByName with another name will be called (as I think)
prepared.setArgs(login);
ResultRange result = prepared.query();
...
}
并且main
:
user.getUserByName("David");
user.getUserByName("Jow"); // calling another
但是我很奇怪:
login before: David
login after: David
login before: Jow
login after: Jow
但是我希望在调用第二个之后: user.getUserByName("Jow");
sleep
后我会得到类似的东西:
login before: David
login after: Jow
我不明白为什么...
据我了解,另一个变体是将用户作为结构并为每个用户创建结构的新副本。 好吗? 也许还有另一个更好的解决方案?
writeln("login before: ", login);
该login
不引用该类的login
字段,因为您有一个名为login
的参数。 如果要使用class字段,则需要:
writeln("login before: ", this.login);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.