【问题标题】:Why does assignment not work the same in Dart as it does in Python?为什么分配在 Dart 中的工作方式与在 Python 中不同?
【发布时间】:2020-09-21 08:20:37
【问题描述】:

当我运行这段代码时:

void readCard(db, [int card_id = -1]) {
    if (card_id == -1) {
        final ResultSet result = db.select('SELECT * FROM cards');
    }

    else {
        final ResultSet result = db.select("""
                SELECT * FROM cards
                WHERE card_id=(?)
                """); // this doesn't work yet
    }

    for (final Row card in result) {
        print(
                "Card {'card_id': ${card['card_id']}, "
                "'due': ${card['due']}, "
                "'content': ${card['content']}}"
                );
    }
}

我收到此错误:

memotext.dart:66:25: Error: Getter not found: 'result'.
        for (final Row card in result) {
                               ^^^^^^

因为result不管是if语句还是else语句都被赋值,不应该没有错误吗?这与 dart 的赋值方式有关吗?

【问题讨论】:

标签: dart assign


【解决方案1】:

结果在各自的块中声明,它不存在于外部。这样做:

void readCard(db, [int card_id = -1]) {
    ResultSet result;
    if (card_id == -1) {
        result = db.select('SELECT * FROM cards');
    }

    else {
        result = db.select("""
                SELECT * FROM cards
                WHERE card_id=(?)
                """); // this doesn't work yet
    }

    for (final Row card in result) {
        print(
                "Card {'card_id': ${card['card_id']}, "
                "'due': ${card['due']}, "
                "'content': ${card['content']}}"
                );
    }
}

【讨论】:

    猜你喜欢
    • 2017-10-24
    • 1970-01-01
    • 2022-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多