gpt4 book ai didi

dart - 使用变量作为键访问对象值

转载 作者:IT王子 更新时间:2023-10-29 07:03:27 24 4
gpt4 key购买 nike

我试图通过使用之前在 dart 中定义的变量来访问类值,但我不断收到错误消息the operator [] isn't defined for the class

在 Javascript 中,我会使用这样的变量访问对象值:

let movie = {
movieTitle : 'Toy Story',
actor: 'Tom Hanks'
}

let actorName = 'actor';
console.log(movie[actorName]); // <- what I'm trying to replicate in dart
// expected output: Tom Hanks

这是我已经尝试过的并且抛出了那个错误

class Movie {
String name;
String actor;
String producer;
}

void main() {
var movieTitle = new Movie();
movieTitle.name = 'Toy Story';
movieTitle.actor = 'Tom Hanks';

print(movieTitle.actor); <- prints out Tom Hanks as expected

var actorName = 'actor';

print(movieTitle[actorName]); <- throws error
}

我希望能够即时使用变量来访问值。

对我来说,一个微不足道的用例是,如果我有一个电影类列表,其中一些 Actor 和制作人为空,我想使用如下函数过滤非空 Actor 或制作人:

List values = movieList.where((i) => i.actor != "null").toList(); // returns all Movies in movieList where the actor value isn't the string "null"

var actorIsNull = 'actor';

List values = movieList.where((i) => i[actorisNull] != "null").toList(); // throws error

最佳答案

您可以在 Movie 类中创建一个 toMap() 函数并使用 [] 运算符访问属性

class Movie {
String name;
String actor;
String producer;

Map<String, dynamic> toMap() {
return {
'name': name,
'actor' : actor,
'producer' : producer,
};
}
}

现在 Movie 类属性可以访问为:

Movie movie = Movie();
movie.toMap()['name'];

关于dart - 使用变量作为键访问对象值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56071807/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com