我不明白这怎么行不通。预先感谢您。
import 'dart:io';
main() {
AskPassword ("dog");
}
AskPassword (correct){
while (true){
print("Write password.");
var password = stdin.readLineSync();
if (password = correct){
print("Thank you!");
} else {
continue;
}
}
}
我尝试删除“”并添加 str 等,但它不起作用。
在 Dart(以及大多数编程语言)中进行相等性检查时,当您想要比较两个对象是否表示相同的值时,可以使用
==
。
您使用过
=
,意思是“赋值”,用于为给定变量赋值。
所以正确的代码是:
import 'dart:io';
void main() {
askPassword("dog");
}
void askPassword(String correct) {
while (true) {
print("Write password.");
var password = stdin.readLineSync();
if (password == correct) {
print("Thank you!");
} else {
continue;
}
}
}
我还做了一些其他改进:
如果一个方法不应该返回任何内容,你应该指定
void
,否则,Dart 会假设你想要 dynamic
,这意味着该方法可以返回任何内容和/或不返回任何内容。
方法名称应以小写字母开头,因为我们在 Dart 中仅使用大写字母作为类型开头。在编程语言中遵循命名约定有很多重要原因,但最重要的是可读性。
参数应该具有类型,因为默认值再次是
dynamic
,它可以表示任何类型的值。但是您的代码需要一个 String
对象,因此您的方法应该指定它。