add native function isa(object,class)

This commit is contained in:
ValKmjolnir 2022-04-05 22:33:55 +08:00
parent e846e51175
commit 651ae4ef77
3 changed files with 43 additions and 2 deletions

12
lib.nas
View File

@ -236,6 +236,8 @@ var isvec=func(v){
return typeof(v)=="vec";
}
# get the index of val in the vec
var vecindex=func(vec,val){
forindex(var i;vec)
if(val==vec[i])
@ -243,6 +245,16 @@ var vecindex=func(vec,val){
return nil;
}
# check if the object is an instance of the class
var isa=func(object,class){
if(!contains(object,"parents") or typeof(object.parents)!="vec")
return 0;
foreach(var elem;object.parents)
if(elem==class)
return 1;
return 0;
}
var io=
{
SEEK_SET:0,

View File

@ -236,6 +236,8 @@ var isvec=func(v){
return typeof(v)=="vec";
}
# get the index of val in the vec
var vecindex=func(vec,val){
forindex(var i;vec)
if(val==vec[i])
@ -243,6 +245,16 @@ var vecindex=func(vec,val){
return nil;
}
# check if the object is an instance of the class
var isa=func(object,class){
if(!contains(object,"parents") or typeof(object.parents)!="vec")
return 0;
foreach(var elem;object.parents)
if(elem==class)
return 1;
return 0;
}
var io=
{
SEEK_SET:0,

View File

@ -174,5 +174,22 @@ println(values({
c:3
}));
println(find("cd", "abcdef")); # prints 2
println(find("x", "abcdef")); # prints -1
println(find("cd", "abcdef")); # prints 2
println(find("x", "abcdef")); # prints -1
println(find("cd", "abcdef")); # prints 2
var a={
new: func(x=0){
return {
x:x,
parents:[a]
};
},
new2: func(x=0){
return {
x:x,
parents:a
};
}
};
println(isa(a.new(),a)); # 1
println(isa(a.new2(),a));# 0