我对理解一个函数有点问题。这是代码:
markerId Int
数据库的结构为x Int
,y Int
,noteText TEXT
,noteItems {
markerId : 0
x: 0
y: 0
noteText: "example"
}
。
我真的不明白这个函数的回归,我是QML的初学者。它是否返回一个对象数组?对象的结构是什么?
这样的事情可能是:
RectF r = new RectF();
matrix.mapRect(r);
// sol1
float scaledX = (lastX - r.left) + 48; // adjust to the tip of eraser
float scaledY = (lastY - r.top) - 137; // adjust to the tip of eraser
float[] values = new float[9];
matrix.getValues(values);
float scalex = values[Matrix.MSCALE_X];
float skewy = values[Matrix.MSKEW_Y];
float scale = (float) Math.sqrt(scalex * scalex + skewy * skewy);
scaledX /= scale;
scaledY /= scale;
Bitmap bmOverlay = Bitmap.createBitmap(bitmap.getWidth(),
bitmap.getHeight(),
Bitmap.Config.ARGB_8888);
System.out.println("bitmap.getWidth() " + bitmap.getWidth() +
" bitmap.getHeight() " + bitmap.getHeight());
Canvas c = new Canvas(bmOverlay);
c.drawColor(Color.TRANSPARENT, Mode.CLEAR);
c.drawBitmap(bitmap, 0, 0, null);
c.drawCircle(scaledX, scaledY, 13.0f, mPaint); // punch a hole
bitmap = bmOverlay; // update the main bitmap
答案 0 :(得分:0)
首先,你问题中的函数没有正确关闭,你有不平衡的大括号。它看起来有点像破旧的剪切和粘贴。
也就是说,假设您向我们展示了该函数的全部内容,您可以注意到它不包含任何return
语句。因此,这样的函数默认返回undefined
。
无论如何,以这种方式行事是有意义的。根据{{3}},_db.readTransaction
接受一个传递事务对象的回调函数(通常命名为tx
,但随意选择您喜欢的名称)并且它不会t关心返回的值,因此通过省略undefined
语句返回return
是一种非常合理的方法。
实际上,该函数正在填充一个名为noteItems
的对象,该对象位于外部作用域中,并且由于名为closure
的概念而成为可能。在这里描述和讨论主题已经很久了,但我们可以总结一下,在你的函数中你可以访问那里定义的任何变量,只要这些变量是封闭的scope
的一部分。
构建导出对象的方式可以在官方文档中找到,因此我不会进一步讨论这个主题。你会发现它与你猜到的很接近。
最后,正如here所述,QML不会干扰JavaScript的自然范围,因此我建议您阅读更多有关它的信息,以便完全了解正在发生的事情。 here一个是开始的好点。