如何用apache thrift做这样的事情。
typedef i64 long
typedef i32 int
service MyService {
long multiply(1:int num1, 2:int num2),
MyService getMyservice()
}
这里我定义了一个MyService,它在MyService内部用作getMyService的返回类型。有没有办法做这样的事情。
答案 0 :(得分:2)
您不能在IDL文件中使用特定于语言的类型。请记住,IDL文件也需要在其他语言上使用,不一定知道long
或int
是什么。上面的代码在语法上是合法的,但是例如会生成不编译的C ++文件,因为long
和int
是已经内置到语言中的类型的名称。
此外,不允许返回服务,因为它基本上只是一个界面。如果你想真正能够返回一个服务(包括我假设的函数的实现),你需要一些方法将一端的代码转换为一些可以在所有其他平台和所有其他语言上运行的通用代码。因此,虽然可以在两个使用相同语言和环境的平台上进行,但只要有任何平台变化,它就会变得非常重要。