我是从C#开始的新游戏开发人员。
现在我需要将我的游戏之一转移到打字稿上。
我尝试自定义C#中我非常熟悉的打字稿中的列表。 我的代码如下:
df=df.apply(pd.to_numeric,errors ='ignore')# convert
df['newkey']=df[0].eq('None').cumsum()# using cumsum create the key
df.loc[df[0].ne('None'),:].groupby('newkey').agg(lambda x : x.sum() if x.dtype=='int64' else x.head(1))# then we agg
Out[742]:
0 1 2 3 4 5 6 7
newkey
0 a 1 1 1 0 0 0 i
1 e 0 1 0 0 1 0 m
2 h 0 0 0 0 1 0 p
还是,我想做一个数组,这样我可以做类似的事情:
export class List {
private items: Array;
constructor() {
this.items = [];
}
get count(): number {
return this.items.length;
}
add(value: T): void {
this.items.push(value);
}
get(index: number): T {
return this.items[index];
}
contains(item: T): boolean{
if(this.items.indexOf(item) != -1){
return true;
}else{
return false;
}
}
clear(){
this.items = [];
}
}
我想这有点像运算符重载,但我不太确定。
谁能告诉我怎么做?
预先感谢。
答案 0 :(得分:2)
仅扩展数组
export class List<T> extends Array<T> {
constructor() {
super();
}
get count(): number {
return this.length;
}
add(value: T): void {
this.push(value);
}
get(index: number): T {
return this[index];
}
contains(item: T): boolean {
if (this.indexOf(item) != -1) {
return true;
} else {
return false;
}
}
clear() {
this.splice(0, this.count);
}
}
答案 1 :(得分:1)
要实现重载索引运算符的效果,您将必须use a proxy to get the runtime behavior,然后使用索引签名进行键入,如下所示:
interface List<T> {
[n: number]: T;
}
但是代理是严肃的机器。使用方法调用的样板可能会更好。