我想知道,是否存在飞镖或颤动方法,该方法以字符串形式返回有关变量值结构的完整类型信息。
例如,如果某些print( someValue.toString() );
发出此信号
{"user":"userName","state":"valid"}
我不知道它是Map还是String。
但是我如何获得一个字符串,它描述了变量的值/结构?
类似PHP的print_r()
,它会打印如下内容:
Array
(
[a] => Apfel
[b] => Banane
[c] => Array
(
[0] => x
[1] => y
[2] => z
)
)
答案 0 :(得分:1)
在Dart中没有像 print_r()
这样的 。
但是,可以使用以下功能来构建例如来自PHP的print_r()
之类的功能。
您可以使用someValue
来评估runtimeType
的类型。
String someValueType = someValue.runtimeType.toString();
String someValueString = someValue.toString();
如果要比较,也可以使用is
。有关that here的更多信息。
Dart是一种强类型语言,这意味着您还可以强制使用类型(List a; String b
),这使得像print_r()
这样的函数对于Dart来说是多余的。
答案 1 :(得分:0)
如果是关于服务器端代码的,则可以使用反射创建一个函数,为每个值生成这样的输出。
如果是关于您自己的类的,则可以实现toString()
以使对象在打印时以这种方式呈现
class Person {
Foo(this.firstName, this.lastName);
String firstName;
String lastName;
@override
String toString() => '''
firstName: $firstName
lastName: $lastName
''';
}
print(new Person('John', 'Doe'));