我不太确定'func literal'是什么因此这个错误让我有点困惑.我想我看到了这个问题 - 我在一个新的go例程中引用了一个范围值变量,因此值可能随时改变,而不是我们所期望的.什么是解决问题的最佳方法?
有问题的代码:
func (l *Loader) StartAsynchronous() []LoaderProcess {
for _, currentProcess := range l.processes {
cmd := exec.Command(currentProcess.Command, currentProcess.Arguments...)
log.LogMessage("Asynchronously executing LoaderProcess: %+v", currentProcess)
go func() {
output, err := cmd.CombinedOutput()
if err != nil {
log.LogMessage("LoaderProcess exited with error status: %+v\n %v", currentProcess, err.Error())
} else {
log.LogMessage("LoaderProcess exited successfully: %+v", currentProcess)
currentProcess.Log.LogMessage(string(output))
}
time.Sleep(time.Second * TIME_BETWEEN_SUCCESSIVE_ITERATIONS)
}()
}
return l.processes
}
Run Code Online (Sandbox Code Playgroud)
我建议修复:
func (l *Loader) StartAsynchronous() []LoaderProcess {
for _, currentProcess := range l.processes { …Run Code Online (Sandbox Code Playgroud) 我正在使用由linter eslint-plugin-react解析的以下代码。它返回警告:
“道具验证中缺少产品”
当我在底部的propTypes中声明product时,我将其传递给函数。任何的想法 ?
import React from 'react'
const ProductDesc = (props)=>({
render(){
return (
<div>
<h1>{props.product.headline}</h1>
<img src={props.product.images[0].imagesUrls.entry[2].url} alt="Thumbnail large pic"/>
<p>Yeah</p>
</div>
)
}
})
ProductDesc.propTypes = {
product: React.PropTypes.object
};
export default ProductDesc;
Run Code Online (Sandbox Code Playgroud) 我写了这个方法来转置 javascript 数组
Array.prototype.transpose = function () {
let rows = this.length;
let cols = this[0].length;
let ret = [[]];
for (y=0;y<cols;y++)
for (x=0;x<rows;x++)
ret[y][x]=this[x][y]
return ret;
}
Run Code Online (Sandbox Code Playgroud)
然而,这是非常低效的,因为它实际上复制了整个数据。
我更喜欢做的是使用一个标志transposed?,它会被认为arr[x][y]是arr[y][x]打开的。
然后,该函数transpose就会切换它。
这如何在 javascript 中完成?