Dart_将输入的密码与正确的密码进行比较 ->“类型‘String’不是类型‘bool’的子类型”

问题描述 投票:0回答:1

我不明白这怎么行不通。预先感谢您。

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
1个回答
0
投票

在 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
    对象,因此您的方法应该指定它。

© www.soinside.com 2019 - 2024. All rights reserved.