puerts
puerts copied to clipboard
[Unity] 函数参数检查过于严格?
detail | 详细描述
function Foo(){
return 1;
}
let K:(a:number)=>void = Foo;
K(1);
上面代码可以正常运行,但是如果将Foo换成C#实现,就会报 invalid arguments to Foo
这个是因为JS比c#松散吧,JS允许实参形参数目不同,c#不允许,自然报invalid arguments
我意思是多出来的参数其实可以忽略,不用检查那么严格
有什么情况会不得不需要puerts层面忽略多余参数?我总觉得既然是调c#那就应该按c#的严格程度来
我遇到的一个情况是,C#函数当做参数传递,TS编译器允许这种操作,能够正常编译,这时候容易忽略这种传参的严格性。
function SetCallback(callback:(a:number)=>void)
{
callback(123);
}
//void ACSharpFunc() { ... }
SetCallback(ACSharpFunc);