打印变量值的详细结构/类型信息

时间:2018-07-24 23:34:24

标签: dart

我想知道,是否存在飞镖或颤动方法,该方法以字符串形式返回有关变量值结构的完整类型信息。

例如,如果某些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
        )
)

2 个答案:

答案 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'));