以下代码甚至可以编译怎么可能?据我所知,count函数是用两种不同的类型调用的,但编译器没有抱怨并且很乐意编译这段代码.
public class Test {
public static <T> int count(T[] x,T y){
int count = 0;
for(int i=0; i < x.length; i++){
if(x[i] == y) count ++;
}
return count;
}
public static void main(String[] args) {
Integer [] data = {1,2,3,1,4};
String value = "1";
int r =count(data,value);
System.out.println( r + " - " + value);
}
}
Run Code Online (Sandbox Code Playgroud) 我很长时间用户,最近发现emacs有viper-mode,提供两全其美(至少对我而言).然而有一件事真的困扰我,因为我主要是在python编码,并且标签和空格的混合是一个大问题.
当处于插入模式时,我想在按TAB时插入viper-shift-width空格而不是TAB.我怎样才能做到这一点?我想一些简单的lisp函数/设置就是解决方案.
我没有在viper模式设置中找到任何可以执行此操作的内容.
编辑:
我有(setq-default indent-tabs-mode nil).emacs但是当我在viper-mode中处于插入模式(在插入模式的vim meaing中)时这不起作用
编辑:请注意,这在生产代码中是一个非常糟糕的想法.这对我来说只是一个有趣的事情.不要在家里这样做!
是否可以在Python中修改整个程序(解释器)的__metaclass__变量?
这个简单的例子是:
class ChattyType(type):
def __init__(cls, name, bases, dct):
print "Class init", name
super(ChattyType, cls).__init__(name, bases, dct)
__metaclass__= ChattyType
class Data:
pass
data = Data() # prints "Class init Data"
print data
Run Code Online (Sandbox Code Playgroud)
但我希望能够改变__metaclass__甚至在子模块中工作.例如(文件m1.py):
class A:
pass
a=A()
print a
Run Code Online (Sandbox Code Playgroud)
文件main.py:
class ChattyType(type):
def __init__(cls, name, bases, dct):
print "Class init", name
super(ChattyType, cls).__init__(name, bases, dct)
__metaclass__= ChattyType
import m1 # and now print "Class init A"
class Data:
pass
data = Data() # print "Class init Data"
print …Run Code Online (Sandbox Code Playgroud) compilation ×1
elisp ×1
emacs ×1
generics ×1
java ×1
metaclass ×1
python ×1
python-2.x ×1
spaces ×1
viper-mode ×1