我想要一个像这样的谓词:
public class Login implements IBaseModel {
public String username, password;
public Login(String username, String password) {
this.username = username;
this.password = password;
}
public String getUsername() {
return this.username;
}
public String getPassword() {
return this.password;
}
}
我可以这样称呼:
public class LoginViewModel implements IViewModel {
private Subscription subscription;
private ILoginDataListener dataListener;
private Login login;
Context context;
String getUserName() {
return this.login.getUsername();
}
LoginViewModel(Context ctx, Login login) {
this.context = ctx;
this.login = login;
}
public void onClickSubmit(View view) {
Toast.makeText(context, "From View Model username is " + this.login.getUsername() + " the password " + this.login.getPassword(), Toast.LENGTH_SHORT).show();
Toast.makeText(context, "From View Model", Toast.LENGTH_SHORT).show();
loginRequest("Rajendra", "12345");
}
public void updateValue(View view) {
this.login.password = "dummy";
this.login.username = "simplefool";
}
@Override
public void destroy() {
if (subscription != null && !subscription.isUnsubscribed()) subscription.unsubscribe();
subscription = null;
context = null;
dataListener = null;
}
}
它会给我/wp-admin/
。
不幸的是,您似乎无法对Prolog中的字符进行此算术运算。欢呼声。
答案 0 :(得分:1)
如果您只想覆盖可打印的ASCII字符(32-127),您只需创建一个包含所有字符的“表格”并将其放入数据库即可。这只是一个小例子:
% space is the first printable ASCII character
asciichar_succ(' ', '!').
asciichar_succ('!', '"').
% ...
asciichar_succ(a, b).
asciichar_succ(b, c).
% ...
asciichar_succ('}', '~').
将此添加到数据库的一种方法是使用编译时术语扩展,例如:
term_expansion(asciichar_succ(_, _), Chars) :-
findall(asciichar_succ(C0, C1), asciichar_next(C0, C1), Chars).
asciichar_next(C0, C1) :-
between(32, 125, Code0),
succ(Code0, Code1),
char_code(C0, Code0),
char_code(C1, Code1).
asciichar_succ(_, _).
当我将它放在文件char_succ.pl
中,并从SWI-Prolog顶层加载此文件时,我得到:
?- [char_succ].
true.
?- asciichar_succ(a, X).
X = b.
?- asciichar_succ(X, '"').
X = !.
?- listing(asciichar_succ/2).
asciichar_succ(' ', !).
asciichar_succ(!, '"').
asciichar_succ('"', #).
asciichar_succ(#, $).
asciichar_succ($, '%').
asciichar_succ('%', &).
% ...
asciichar_succ(?, @).
asciichar_succ(@, 'A').
asciichar_succ('A', 'B').
asciichar_succ('B', 'C').
% ...
asciichar_succ(y, z).
asciichar_succ(z, '{').
asciichar_succ('{', '|').
asciichar_succ('|', '}').
asciichar_succ('}', ~).
true.
这样做有一个非常好的属性:只要两个参数中至少有一个是基础的,谓词就是确定性的,不会留下任何选择点。换句话说,asciichar_succ/2
是一种“真正的关系”。在运行时,你绝对可以通过算术获得相同的最终结果,但是要做到正确会有点毛躁。