问题描述
Widget build(BuildContext context) {
return StreamBuilder(
stream: Firestore.instance.collection('shippingAddress').snapshots(),builder: (ctx,Snapshot) {
if (chatSnapshot.connectionState == ConnectionState.waiting) {
return Center(
child: CircularProgressIndicator(),);
}
final shippingAddressDocs = Snapshot.data.documents;
return ListView.builder(
itemCount: shippingAddressDocs.length,itemBuilder: (ctx,index) => Text(
shippingAddressDocs [index]['alias'],));
},);
}
}
返回的结果可以是答案private String processQuery(String[] args){
//code logic
}
或响应(Your account detail is $account_detail.)
。根据结果,代码将执行不同的操作。
我想出的是用户(Sorry I cannot understand you?)
。
Either<String,String>
如果返回左,则为答案;如果返回右,则为响应。但是,由于Java中没有任何一种类型,因此我尝试传递AtomicBoolean。
仅使用 java stl 有什么更好的解决方案?
解决方法
一种解决方案是使该方法采用对应于正确答案和错误答案的两个lambda函数,然后仅调用适当的lambda函数。
count
可以这样称呼
private void processQuery(String[] args,Consumer<String> correct,Consumer<String> incorrect){
if (args.length == 0) {
incorrect.accept("Sorry I cannot understand you?");
return;
}
correct.accept("Your account detail is $account_detail.");
}
或为不同的功能创建变量
private void reply(String[] args){
processQuery(args,(
reply -> System.out.println("Success!," + reply)
),(
reply -> System.out.println("Fail," + reply)
)
);
}
,
您可以使用Pair
:
Pair<String,String> pair = Pair.with("Blah","Blee");
查看示例here
如果您的responses
实际上代表某种错误,一种更好的方法是抛出某种异常,并保持String
的返回值代表“良好”流。