Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Types 如何推断函数的返回类型?_Types_Type Inference_Type Systems - Fatal编程技术网

Types 如何推断函数的返回类型?

Types 如何推断函数的返回类型?,types,type-inference,type-systems,Types,Type Inference,Type Systems,我正在开发一种编译成Javascript的类型化编程语言。 现在,我在推断函数的返回类型时遇到了一些麻烦 我还没有实现并集或交集类型。到目前为止,该语言只支持基元类型, 用户定义的类/函数类型和泛型(如数组)。它在语法上与Python非常相似,类型系统也差不多 例如,以下代码块的返回类型为number func foo(a: number): for i = 1, a: if i <= 10: return 10 return 11 func-foo(a:数

我正在开发一种编译成Javascript的类型化编程语言。 现在,我在推断函数的返回类型时遇到了一些麻烦

我还没有实现并集或交集类型。到目前为止,该语言只支持基元类型, 用户定义的类/函数类型和泛型(如数组)。它在语法上与Python非常相似,类型系统也差不多

例如,以下代码块的返回类型为
number

func foo(a: number):
  for i = 1, a:
    if i <= 10:
      return 10
   return 11
func-foo(a:数字):
对于i=1,a:

如果一个函数必须返回一个值,那么您可以检查函数中的每个表达式:对于
return x
,推断
x
的类型,并确保它与每个其他
return
语句的推断类型相匹配。如果有多个返回类型,则会出现错误(或者,如果有子类型,则选择最通用的超类型)。如果函数结束时没有返回值,则这可能是一个错误,或者被认为与
returnnull
相同或类似。