【问题标题】:How can I print multiple objects to console.log with dart?如何使用 dart 将多个对象打印到 console.log?
【发布时间】:2015-01-01 13:23:25
【问题描述】:

在 javascript 中,如果我有 3 个这样的变量:

var x = 1
var y = 'cat'
var z = {color: 'blue'}

我可以像这样记录所有这些:

console.log('The values are:', x, y, z)

在 dart 中,您可以使用 import 'dart:html',它会在编译的 javascript 中将 print 映射到 console.log。但是print只带一个参数——不是3个。编译好的js在浏览器中运行时这个dart会失败:

print('The values are:', x, y, z)

我唯一能想到的就是将这些参数字符串化并将它们连接成一个字符串,然后打印出来。但后来我失去了 Chrome 扩展打印到控制台的对象的能力。

是否可以使用一个print 语句(或类似语句)打印多个对象?如果有,怎么做?

【问题讨论】:

  • 如果你这样做print([x, y, z]);会发生什么?

标签: dart dart-html


【解决方案1】:

怎么样:?

print('The values are: ${[x, y, z]}')

print('The values are: $x, $y, $z')

['The values are:', x, y, z].forEach(print);

【讨论】:

  • 两个版本都将所有对象打印为字符串的一部分,而不是作为独立对象。实际的 javascript 对象(例如{one: 1, ...})不能以这种方式展开。
  • 对于每个元素 toString() 将被调用并将结果添加到字符串中。我不是 JavaScript 程序员,也不知道如何以不同的方式处理它。我添加了另一个变体,也许这更符合您的期望。
  • 第三个版本打印所有值,但将对象打印为字符串而不是对象。也许是不可能的。
  • 这就是 print 的作用。它在传递的值上调用toString()。 Mybe,您只想使用 window.console.debug 而不是 print,但在 Dartiums 控制台中只产生不同的输出,而不是在 DartEditor 的控制台视图中。
  • 很好的答案!)@GünterZöchbauer,再次感谢!)尤其是最后一个)
【解决方案2】:

在 Dart 中,您可以导入 dart:html,这样您就可以访问 window.console。不幸的是,它的 log 方法只能接受一个参数。不过,您可以将对象包装在列表中:

import 'dart:html';

var x = 1
var y = 'cat'
var z = {color: 'blue'}

window.console.log([x, y, z]);

【讨论】:

  • 很好,但有点遗憾,因为 dart 与浏览器 api 不匹配,所以您必须采取变通办法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-04
  • 2013-01-28
  • 1970-01-01
  • 2014-01-28
  • 1970-01-01
  • 1970-01-01
  • 2021-06-11
相关资源
最近更新 更多