想想Rails如何允许您将属性定义为与另一个属性相关联:
class Customer < ActiveRecord::Base
has_many :orders
end
Run Code Online (Sandbox Code Playgroud)
这不会为其设置数据库列orders.相反,它创造了一个吸气剂orders,这使我们能够做到
@orders = @customer.orders
Run Code Online (Sandbox Code Playgroud)
哪个去获取相关orders对象.
在JS中,我们可以使用getter轻松实现:
{
name: "John",
get orders() {
// get the order stuff here
}
}
Run Code Online (Sandbox Code Playgroud)
但是Rails是同步的,而在JS中,如果在我们的例子中,合理的话,我们将进入数据库,我们将把它做为异步.
我们如何创建异步getter(以及setter)?
我们会回复最终得到解决的承诺吗?
{
name: "John",
get orders() {
// create a promise
// pseudo-code for db and promise...
db.find("orders",{customer:"John"},function(err,data) {
promise.resolve(data);
});
return promise;
}
}
Run Code Online (Sandbox Code Playgroud)
这将允许我们这样做
customer.orders.then(....);
Run Code Online (Sandbox Code Playgroud)
或者我们会做更多角度风格,我们会自动将其解析为值吗?
总之,我们如何实现异步吸气剂?
使用onclick链接Safari时,print方法在窗口上不起作用.通过放置在按钮上的onclick代码在Safari中进行网页打印的替代方法是什么?发生的另一个奇怪的行为是当我尝试关闭窗口时,然后会出现浏览器原生的打印对话框.
我能够调试一个简单的Java hello世界.第一步是"编译" javac -g.我查看了如何用maven完成同样的操作并找到http://docs.spring.io/spring-boot/docs/current/maven-plugin/examples/run-debug.html,但这些说明用于运行应用程序并等待调试器连接.
我也试着使用target/classes了classpath在 launch.json.调试器抱怨它无法在根目录中找到文件/,但它会运行.虽然调试器正在运行,但应用程序没有响应HTTP请求.
是否有一个mvn命令来编译应用程序javac -g并生成一个.class调试器能够成功运行?
在我们的应用程序中,我们处理粘贴的内容,然后将其插入到可信的div中.在Firefox和Chrome中,粘贴event.clipboardData.getData有两个键text/plain和text/html.在Safari中,它有大约12个键,范围从文本到RTF,但不包括用户粘贴在其中任何一个中的HTML.如何从粘贴事件中访问它?
$( 'div' ).on( 'paste', function( aEvent ) {
var evt = aEvent.originalEvent;
var text = evt.clipboardData.getData( 'text/plain' );
var html = evt.clipboardData.getData( 'text/html' );
var i, len;
console.log( 'text=' + text );
console.log( 'html=' + html );
console.log( 'data types=' );
console.log( evt.clipboardData.types );
for ( i = 0, len = evt.clipboardData.types.length; i < len; i++ ) {
console.log( evt.clipboardData.types[ i ] + '=' + evt.clipboardData.getData( evt.clipboardData.types[ i ] ) );
}
});
Run Code Online (Sandbox Code Playgroud)
突出显示两个段落,复制它们,然后粘贴到新行并观察控制台.
[编辑]如果我从复制事件中使用Rangy的range.toHtml,我可以保存所选内容的快照.在粘贴事件中,我首先检查剪贴板,然后检查我保存的片段,然后回退到文本.理想情况下,我希望尽可能让剪贴板API工作.
我的JavaScript在网页的DOM中运行,并为每个节点获取计算出的样式:
var computedStyle = window.getComputedStyle(element);
Run Code Online (Sandbox Code Playgroud)
然后使用它来获取大约20个值,例如:
c_style = computedStyle.getPropertyValue("height");
Run Code Online (Sandbox Code Playgroud)
事实证明,这在IE中非常缓慢(尝试IE11和IE9)。
如果我只是得到getComputedStyle样式,则页面的时间为0.3秒(脚本还执行其他操作)。
如果我添加getPropertyValue,则该页面的时间将增加到3整秒。但是,在Firefox中,脚本也在查找这些值几乎没有区别。
在IE(9+)中还有另一种方法吗?还是出了什么问题?
编辑:其他人是否有成功(=良好的性能)从IE中获得许多样式?
#include <stdio.h>
void print(char *strings[]) {
while (*strings) printf("%s\n", *strings++);
}
int main(int argc, char *argv[]) {
char *array[] = {"Hello", "World", NULL}; // No warning?
const char *constArray[] = {"Hello", "World", NULL};
print(constArray); // Warning!
//constArray[0][0] = '!'; Compile time error
array[0][0] = '!'; // Run time error
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我期待收到警告,char *array[] = {"Hello", "World", NULL};因为这些字符串的字符是只读的,但编译器没有给我警告。所以基本上编译器让我在没有警告的情况下“强制转换”const char到 a char。
将 a 传递const char给接收 a charin的函数时,print(constArray);换句话说,将 aconst char …
我正在尝试编写一个 memoize 函数,该函数将一个函数作为参数并返回一个类似的 memoized 函数。
function memoize<T extends Function, R>(f: T): T {
const memory = new Map<string, R>();
const g = (...args: any[]) => {
if (!memory.get(args.join())) { memory.set(args.join(), f(...args)); }
return memory.get(args.join());
};
return g; // g as T => [ts] Type '(...args: any[]) => R' cannot be converted to type 'T'.
}
// const exp: (...args: any[]) => RegExp
const exp = memoize<(text: string) => RegExp, RegExp>((text: string) => {
return new RegExp(text.replace(/[^a-zA-Z0-9\s]/g, ".").replace(/\s+/g, "\\s+"), "ig");
}); …Run Code Online (Sandbox Code Playgroud) javascript ×4
safari ×2
c ×1
casting ×1
constants ×1
gcc ×1
java ×1
maven ×1
memoization ×1
promise ×1
spring-boot ×1
typescript ×1
warnings ×1