我有Python客户端调用Thrift服务,带有一些可选参数,如下所示:
bool postTweet(1: required Tweet tweet, 2: i32 x = 100);
Run Code Online (Sandbox Code Playgroud)
如果我试图从Python客户端调用此服务而不传递可选参数x,我会得到一个异常:
TypeError: postTweet() takes exactly 2 arguments (1 given)
Run Code Online (Sandbox Code Playgroud)
任何线索,为什么我得到这个异常,但它是一个默认值的可选参数?
使用默认值定义一个thrift函数是不可能的(至少从我读完节俭白皮书后的理解)
你可以做的是定义一个特殊的参数结构,让你省略一些字段.
节俭代码示例:
struct PostTweetParameter {
1: required Tweet tweet;
2: optional i32 x;
}
bool postTweet(1: PostTweetParameter param);
Run Code Online (Sandbox Code Playgroud)
然后你可以构造省略的PostTweetParameter字段x.