Boo 中的多个 Return 类型语法?

Multiple Return Type Syntax in Boo?

我试图在 Boo 中定义一个方法,其中 return 有两件事,但编译器吐出了消息:

expecting "COLON", found ','.

以下是我尝试定义方法的方式:

from System.Collections.Generic import HashSet

# ValueParameter is a class defined elsewhere.
def evaluate(s as string, limit as string) as double, HashSet[of ValueParameter]:

我查看了文档,虽然我看到了如何 return 多个项目的示例,但我没有看到任何示例将 return 类型声明为 return多种类型。

我找到了 the swap example on the wiki,它声明了一个使用多个 return 值的函数,并且 运行 它通过带有 -p:boo 标志的编译器输出了一个代码完成所有处理后 AST 的最终形式的表示。它报告此函数的类型是(int)。当你 return 两个不同的类型时,比如你的 double 和 HashSet,return 类型是 (object).

您可以从 System 导入 Tuple 并将其用于 return 具有以下类型的元组:

import System

def string_and_int(s as string, i as int) as Tuple[of string, int]:
    return Tuple[of string, int](s, i)

这会正确保留每个元素的类型。但是请注意,无论如何,在 Boo 中,元组类型不可迭代或可切片,因此您必须使用 .Item1.Item2 等来获取它:

 example = string_and_int("s", 2)
 print example.Item1
 # 's'
 print example.Item2
 # 2