出于诊断目的,我想打印矩阵(数组数组)。使用循环执行此操作意味着多次执行跟踪命令,据我所知 - 这排除了将多个表格单元格打印到单行的可能性。
(编码trace(x); trace(y);
时,换行符介于x
和y
之间。)
我该怎么办?
答案 0 :(得分:1)
您可以使用"\n"
将跟踪语句分解为多行。我不太确定这是你问的问题。
如果使用flex,可以使用ObjectUtil.toString()将对象(嵌套数组)转换为字符串表示形式。
如果您询问如何使用多条迹线打印一行,我建议先转换为字符串。想象你有一个矩阵分成行数组。请注意,此代码未经测试可能存在拼写错误。它也可以假设您的外部数组包含一个String对象数组,这可能不是这种情况,但它应该有帮助,可以转换为其他数据类型。
var rowText:String = "";
trace ("BEGIN tracing rows");
for each (var row:Array in rows)
{
for each (var value:String in row)
{
rowText = rowText + value + " ";
}
trace (rowText);
}
trace("END tracing rows");
答案 1 :(得分:1)
以下代码......
var jaggedArray:Array = new Array(new Array(" 1 "," 2 ", " 3 "), new Array(" 3 ", " 4 ", " 5 "));
var output:String = "";
for( var i:Number = 0; i < jaggedArray.length; ++i){
for(var j:Number = 0; j < jaggedArray[i].length; ++j){
output += jaggedArray[i][j];
}
output += "\n";
}
trace(output);
...产生以下输出:
这是你要找的吗?如果是这种情况,请不要像我一样使用丑陋的字符串连接,最好使用in the SO question所述的缓冲区。
锯齿状数组是一个数组,其元素是数组。它具有不同大小的特点。
答案 2 :(得分:1)
var x:int=10, y:int=x/2, z:int=y*2;
// trace as single space-delimited line:
trace(x, y, z); // 10 5 10
但对于数组,您可以这样做:
var a1:Array = [1, 2, 35678];
var a2:Array = [124, 5, 6];
var a3:Array = [7, 128, 9];
var mtx:Array = [a1, a2, a3];
for each(var row:Array in mtx) {
trace(row.join('\t'));
// or use delimiter function
// to right align values...
}
答案 3 :(得分:1)
为了解决这个问题,我个人刚刚创建了一个允许我写入课程的新课程;然后执行trace命令:
public class TraceHolder {
private var txt:String = "";
public function TraceHolder() {
// constructor code
}
public function writeTo(inStrg:String) : void
{
txt = txt.concat(inStrg);
}
public function execute() : void
{
trace(txt);
txt = "";
}
}
然后允许我这样做:
var th:TraceHolder = new TraceHolder();
th.writeTo("blah blah blah the front of the line");
th.writeTo("blah blah blah");
th.writeTo("blah blah blah end of the line");
th.execute();
跟踪这个:
blah blah blah the front of the lineblah blah blahblah blah blah end of the line
简单,有效且无用。