我有[3, 16, 120]
.当我这样做时[3, 16, 120].map(mapper)
,我想实现,例如[4,5, 17,18, 121,122]
每个元素映射到n + 1和n + 2.这当然是一个例子 - 我想要的是简单地从mapper函数中推送多个值
我是否必须使用Array.each并推送到数组,或者是否可以使用Array.map(或其他内置的api)来实现
我是C++的新手.我正在尝试调用一个接收char**的函数:
bool func(char** a) {
//blablabla
}
Run Code Online (Sandbox Code Playgroud)
所以它需要一个c字符串数组.我需要创建一个char**,但没有任何效果.
char** a = char[255][255]; // error: type name is not allowed
char** a = new char[255][255]; // error: a value of type "char (*)[255]" cannot be used to initialize an entity of type "char **"
char a[][] = {"banana", "apple"};
char** b = &a; // error: a value of type "<error-type> (*)[2]" cannot be used to initialize an entity of type "char **"
Run Code Online (Sandbox Code Playgroud)
最后我需要做:
char* a[] = {"banana", "apple"};
Run Code Online (Sandbox Code Playgroud)
为什么前几个不起作用,为什么最后一个有效?
提前致谢.
对于模块模式,我做的事情如下:
(function(namespace) {
// tons of code
// blabla
})(window.myGlobalNamespace);
Run Code Online (Sandbox Code Playgroud)
如何拆分代码?我可以想到几种方法,比如使用命名空间的层次结构,或者扩展外部的对象window.myGlobalNamespace.additionalFunc = function () {//blabla}
.还有什么其他方法?优缺点都有什么?哪一个被认为是更好的做法?
这两个答案都提出了RequireJS.能否解释一下RequireJS如何解决这些问题:
first.js:
(function(context) {
var parentPrivate = 'parentPrivate';
})(window.myGlobalNamespace);
Run Code Online (Sandbox Code Playgroud)
second.js:
(function(context) {
this.childFunction = console.log('trying to access parent private field: ' + parentPriavte);
}(window.myGlobalNamespace.subNamspace);
Run Code Online (Sandbox Code Playgroud)
main.js:
window.myGlobalNamespace.subNamspace.childFunction(); // doesn't work
Run Code Online (Sandbox Code Playgroud)
人们可以做到
window.myGlobalNamespace.subNamspace.childFunction = function() {alert("a new function");}
Run Code Online (Sandbox Code Playgroud)
改变我的代码的行为!
这里有两个问题:
我们不能拥有儿童可以访问的字段,但不能访问外部公众(即受保护的).有没有办法实现这一目标?
如果没有,意味着如果我们想要访问,我们需要将其公之于众.然后用户将能够修改它!
更重要的是,所有公共功能都可以更改和替换.我不希望这种情况发生.
我不知道RequireJS如何解决这些问题.有人可以解释一下吗?
javascript module-pattern requirejs revealing-module-pattern
我有阵列: [1,2,3,4,5,6,7]
我想实现: [[1,2], [3,4], [5,6], [7]]
我在想Array.map,但它似乎无法映射到任何元素?
我有(使用Underscorejs):
arr.map(function(el, idx, arr) {
if (idx%2 != 0) return null;
if (idx == arr.length-1) return [el];
return [el, arr[idx+1]]
}).compact();
Run Code Online (Sandbox Code Playgroud)
这仍然有点难看.如何实现转换(没有显式循环)?
请参阅jsfiddle:http: //jsfiddle.net/LsNCa/2/
function MyFunc() {
for (var i = 0; i < 2; i++) { // i= 0, 1
var myDiv = $('<div>');
myDiv.click(function(e) {
alert(i); // both the two divs alert "2", not 0 and 1 as I expected
});
$('body').append(myDiv);
}
}
var myFunc = new MyFunc();
Run Code Online (Sandbox Code Playgroud)
当我点击它时,我希望div分别提醒"0"和"1".但他们都警告"2".
当我单击div并触发事件时,处理程序如何以及在何处找到变量i的值?
我知道添加一个闭包可以实现我的目标.但为什么?
我明白了:
$ git checkout mybranch
error: Your local changes to the following files would be overwritten by checkout:
.idea/workspace.xml
Please, commit your changes or stash them before you can switch branches.
Aborting
Run Code Online (Sandbox Code Playgroud)
但.idea/
已经在我的.gitignore
.如果我这样做git status
,也没有出现任何变化.
请指教.
更新:
感谢您的建议.我希望我可以去mybranch
检查,但我不能,因为它不允许我切换!如果忽略它是正确的行为.idea/
(它们是来自IDE的项目配置文件),我现在该怎么办?我的目标是去mybranch
和它合并master
.您可以将其mybranch
视为生产分支,并将其视为开发分支.现在我想更新prod,因为master足够稳定.
我的项目对大多数文件使用Webpack和es6模块。这些文件在浏览器中运行,并由Webpack捆绑。
在节点中运行的文件很少。他们没有被Webpack所感动,我看不到任何将它们包含在webpack中的好处。他们不支持,import
因为尚未在节点(或V8)中实现。
现在进入.eslintrc
,如果设置parserOptions.sourceType
为script
,它将在浏览器文件中出现错误(“ import
并且export
仅在模块中允许!”)。如果parserOptions.sourceType
设置为module
,它将在节点文件中出错。
那么如何做每个文件parserOptions
?/* eslint-env xxx */
在这种情况下不起作用
我可能可以使用特定于目录的.eslintrc
,但这意味着为了更改一个选项而复制所有其他配置。还有更好的选择吗?
我正在阅读Java ForkJoin框架.通过不直接调用(例如)invoke()
的实现,但实例化和调用有什么额外的好处?当我们称这两种方法全部被调用时到底发生了什么?ForkJoinTask
RecursiveTask
ForkJoinPool
pool.invoke(task)
invoke
从源代码来看,似乎如果recursiveTask.invoke
被调用,它将以托管线程池的方式调用它exec
并最终调用它compute
.因此,为什么我们有这个成语更令人困惑pool.invoke(task)
.
我写了一些简单的代码来测试性能差异,但我没有看到任何.也许测试代码错了?见下文:
public class MyForkJoinTask extends RecursiveAction {
private static int totalWorkInMillis = 20000;
protected static int sThreshold = 1000;
private int workInMillis;
public MyForkJoinTask(int work) {
this.workInMillis = work;
}
// Average pixels from source, write results into destination.
protected void computeDirectly() {
try {
ForkJoinTask<Object> objectForkJoinTask = new ForkJoinTask<>();
Thread.sleep(workInMillis);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
@Override
protected void …
Run Code Online (Sandbox Code Playgroud) java concurrency java.util.concurrent fork-join forkjoinpool
对于socket.on("someChannel",handler),我希望将我的处理函数提取到另一个文件中.因此,它们需要在套接字obj中传递,还有一些额外的信息.
喜欢:
socket.on("myEvt", myEvtHandler);
myEvtHandler(socket, additionalInfo, data) {//some stuff here}
Run Code Online (Sandbox Code Playgroud)
但我不能.我能想到的最好的就是关闭:
(function(socket, addtionalInfo) {
socket.on("myEvt", function(data) {
myEvtHandler(socket, addtionalInfo, data);
});
})(socket, addtionalInfo);
Run Code Online (Sandbox Code Playgroud)
它是否正确?还有更好的方法吗?
我知道Java中的int范围应该是-2 ^ 31到2 ^ 31-1.但是当我用20运行这段代码片段时:
public class Factorial {
public int factorial(int n) {
int fac=1;
for (int i=1; i<=n; i++) {
fac *= i;
System.out.println("Factorial of " + i + " is: " + fac);
}
return fac;
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
Factorial of 1 is: 1
Factorial of 2 is: 2
Factorial of 3 is: 6
Factorial of 4 is: 24
Factorial of 5 is: 120
Factorial of 6 is: 720
Factorial of 7 is: 5040
Factorial of 8 …
Run Code Online (Sandbox Code Playgroud) javascript ×5
java ×2
map-function ×2
c++ ×1
concurrency ×1
ecmascript-6 ×1
es6-modules ×1
eslint ×1
fork-join ×1
forkjoinpool ×1
git ×1
int ×1
range ×1
requirejs ×1
scope ×1
socket.io ×1
sockets ×1
string ×1
websocket ×1