我正在阅读'CreateSpace转到2012年的编程简介'
在第86页,我发现了这个邪恶的魔法
func makeEvenGenerator() func() uint {
i := uint(0)
return func() (ret uint) {
ret = i
i += 2
return
}
}
// here's how it's called
nextEven := makeEvenGenerator()
fmt.Println(nextEven())
fmt.Println(nextEven())
fmt.Println(nextEven())
Run Code Online (Sandbox Code Playgroud)
1)为什么i不重置?2)nextEven()回归和/ uint或是Println如此聪明,它可以与一切工作?
我理解这个错误,但仍然不知道如何转换i为u32/integer.
let n = 2;
for i in [1..10].into_iter() {
if n % i == 0 {
...
}
}
Run Code Online (Sandbox Code Playgroud)
if n % (i as u32) == 0不起作用
帮助:该特征
std::ops::Rem<&std::ops::Range<{integer}>>未实现{integer}
一开始我认为问题在于chrome.runtime.sendMessage()我发送了两条消息.一个用于访问localstorage,另一个用于获取/读取文件数据,但在将它们合并为一个之后没有任何改变,sendMessage这意味着实际问题是window.webkitRequestFileSystem()它返回的是先前的文件而不是当前文件.
是否有更好/更快的方式存储客户端?(我愿意尝试一切)?
的manifest.json
{
"manifest_version": 2,
...
"content_scripts": [
{
"matches": ["http://*/*", "https://*/*"],
"js": ["content.js"],
"run_at": "document_end"
}
],
"background": {
"scripts": ["background.js"]
},
"permissions": [
"unlimitedStorage"
]
}
Run Code Online (Sandbox Code Playgroud)
background.js
var theme = '';
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
if(request.method == "getTheme") {
themes = JSON.parse(localStorage["themes"]);
themeName = "";
for (var i = themes.length - 1; i >= 0; i--) {
if(request.url.indexOf(themes[i]) !== -1) {
themeName = themes[i];
}
};
window.webkitRequestFileSystem(window.PERSISTENT, 0, readFromFileStorage.bind(window, …Run Code Online (Sandbox Code Playgroud)