我git add -i第一次使用Git add的交互模式(),并对diff它提供的命令有疑问.默认情况下,它显示我已经上演的更改的差异(相当于使用git diff --staged).有没有办法让它显示未分级更改的差异?当我需要有选择地添加一些文件进行分段并希望在添加它们之前查看我所做的更改时,这将非常有用.我想这样做而不离开交互模式或打开另一个终端进行常规操作git diff.
可能重复:
获取函数的arity
如何声明函数表达式,将其传递给已定义的函数,并使用已定义的函数确定函数表达式具有多少个参数?
请参阅此代码段以供参考:
function getArgumentCount(fexp)
{
return ...;
}
var fexp1 = function(a) { };
var fexp2 = function(a, b) { };
console.log(getArgumentCount(fexp1)); // Should output 1
console.log(getArgumentCount(fexp2)); // Should output 2
Run Code Online (Sandbox Code Playgroud) 我有一组API类,它们仅包含静态方法和单个私有构造函数,因此无法实例化它们。但是,我希望第三方开发人员能够修改API的行为以适应他们的需求。
这是我到目前为止的解决方案(通过静态setter方法进行依赖注入)。这是开发人员将使用的公共API类。如您所见,它与有关StaticApiImpl。
public class StaticApi {
private static StaticApiImpl impl = new StaticApiImpl();
private StaticApi() {}
public static void setImpl(StaticApiImpl impl) {
StaticApi.impl = impl;
}
public static void doThing() {
impl.doThing();
}
}
Run Code Online (Sandbox Code Playgroud)
这是我自己编写的默认API实现。
public class StaticApiImpl {
public void doThing() {
System.out.println("Do thing the default way.");
}
}
Run Code Online (Sandbox Code Playgroud)
这是第三方可能编写的默认实现的假设扩展版本:
public class MyCustomStaticApiImpl extends StaticApiImpl {
@Override
public void doThing() {
System.out.println("Do thing differently.");
}
}
Run Code Online (Sandbox Code Playgroud)
然后,开发人员只需在初始化插件时通过setter方法插入其依赖项即可:
public void onLoad() throws Exception {
StaticApi.setImpl(new MyCustomStaticApiImpl());
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:这是正确的做法吗?也许有一些我从未听说过的专门针对此类情况的设计模式?
以下两个片段之间是否存在任何差异,或者是否有任何理由使用其中一个?
if (foo) {
bar();
}
Run Code Online (Sandbox Code Playgroud)
foo && bar();
Run Code Online (Sandbox Code Playgroud)