在 Dart 中如何将变量名转换为字符串?
How do you convert variable names to a string in Dart?
对 Flutter 和 Dart 还很陌生,所以请原谅我这个措辞不当的问题。
这是我拥有的通用代码:
// Constructor class
class ctr {
String i;
ctr(String a){
this.a = a;
}
// New variables based on contsructor
var ctrA = ctr('a');
var ctrB = ctr('b');
var ctrC = ctr('c');
// Storing the variables based on constructor in an array
List ctrList = [ctrA, ctrB, ctrC]
void main() {
String match = 'ctrB';
for (var i = 0; i<ctrList.length; i++) {
if(match == ctrList.toString() {
print('The string of your match is ${ctrList[i].a}');
} else {
print('Error!);
}
}
}
当前输出为Error!
。
相反,我正在寻找的是 a
.
如您所见,我正在尝试根据上述构造函数在存储变量的数组上迭代变量 match
,如果匹配,则打印出构造函数中的值已匹配到。 runtimeType
只能让我得到原点的名称 Class(这将是 ctr
)。
我尝试使用 toString()
来转换变量名,但这也没有用。我需要的是一种将这些变量名转换为字符串并进行匹配的方法,但我不确定我能做什么。
在此先感谢您的帮助!
这是声明自定义对象列表的方式。
List<ctr> ctrList= [ ctrA , ctrB , ctrC ];
void main() {
String match = 'ctrB';
for (var index = 0; i<ctrList.length; i++) {
if(match == ctrList[index].i {
print('The string of your match is ${ctrList[i].a}');
} else {
print('Error!);
}}
Dart 中无法获取对象名称。例如 C# 有 nameof()
函数,但 Dart 没有类似的东西。
话虽这么说,但无论您出于何种原因需要这样做,都可能有一种更简单的方法。所以请随时询问其他方法。
如果您只想将变量名用作各种标识符,也许可以查看地图。
Map<String,String> x = {"ctrB" : "b"};
它们允许您定义任意类型的键和值。
编辑:顺便说一句,这个声明
class ctr {
String i;
ctr(String a){
this.a = a;
}
可以简化为:
class ctr {
String i;
ctr(this.i);
}
对 Flutter 和 Dart 还很陌生,所以请原谅我这个措辞不当的问题。
这是我拥有的通用代码:
// Constructor class
class ctr {
String i;
ctr(String a){
this.a = a;
}
// New variables based on contsructor
var ctrA = ctr('a');
var ctrB = ctr('b');
var ctrC = ctr('c');
// Storing the variables based on constructor in an array
List ctrList = [ctrA, ctrB, ctrC]
void main() {
String match = 'ctrB';
for (var i = 0; i<ctrList.length; i++) {
if(match == ctrList.toString() {
print('The string of your match is ${ctrList[i].a}');
} else {
print('Error!);
}
}
}
当前输出为Error!
。
相反,我正在寻找的是 a
.
如您所见,我正在尝试根据上述构造函数在存储变量的数组上迭代变量 match
,如果匹配,则打印出构造函数中的值已匹配到。 runtimeType
只能让我得到原点的名称 Class(这将是 ctr
)。
我尝试使用 toString()
来转换变量名,但这也没有用。我需要的是一种将这些变量名转换为字符串并进行匹配的方法,但我不确定我能做什么。
在此先感谢您的帮助!
这是声明自定义对象列表的方式。
List<ctr> ctrList= [ ctrA , ctrB , ctrC ];
void main() {
String match = 'ctrB';
for (var index = 0; i<ctrList.length; i++) {
if(match == ctrList[index].i {
print('The string of your match is ${ctrList[i].a}');
} else {
print('Error!);
}}
Dart 中无法获取对象名称。例如 C# 有 nameof()
函数,但 Dart 没有类似的东西。
话虽这么说,但无论您出于何种原因需要这样做,都可能有一种更简单的方法。所以请随时询问其他方法。
如果您只想将变量名用作各种标识符,也许可以查看地图。
Map<String,String> x = {"ctrB" : "b"};
它们允许您定义任意类型的键和值。
编辑:顺便说一句,这个声明
class ctr {
String i;
ctr(String a){
this.a = a;
}
可以简化为:
class ctr {
String i;
ctr(this.i);
}