add result.nas

This commit is contained in:
Li Haokun 2021-09-01 19:14:03 +08:00 committed by GitHub
parent 59dc0d1423
commit 418531a44a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 69 additions and 1 deletions

View File

@ -139,7 +139,8 @@ var math=
ln: func(x) {return __builtin_ln(x); },
sqrt: func(x) {return __builtin_sqrt(x); },
atan2: func(x,y){return __builtin_atan2(x,y);},
nan: func() {return 1/0-1/0; },
inf: 1/0,
nan: 1/0-1/0,
isnan: func(x) {return __builtin_isnan(x); }
};

28
stl/result.nas Normal file
View File

@ -0,0 +1,28 @@
import("lib.nas");
var ResultTrait={
Ok:func(val){
me.ok=val;
me.flag=0;
return me;
},
Err:func(info){
me.err=info;
me.flag=1;
return me;
},
unwrap:func(){
if(me.flag)
die("error: "~me.err);
return me.ok;
}
};
var Result=func(){
return{
ok:nil,
err:"",
flag:1,
parents:[ResultTrait]
};
};

39
test/exception.nas Normal file
View File

@ -0,0 +1,39 @@
import("lib.nas");
var ResultTrait={
Ok:func(val){
me.ok=val;
me.flag=0;
return me;
},
Err:func(info){
me.err=info;
me.flag=1;
return me;
},
unwrap:func(){
if(me.flag)
die("error: "~me.err);
return me.ok;
}
};
var Result=func(){
return{
ok:nil,
err:"",
flag:1,
parents:[ResultTrait]
};
};
var a=func(){
return Result().Ok("hello world");
}
var b=func(){
return Result().Err("unknown");
}
println(a().unwrap());
b().unwrap();