dart中类似于JS中键入的函数如何返回
在dart中类似于JS中键入的函数如何返回,dart,Dart,在Javascript中,当我想要结束一个函数时,我通常会写return,但在dart中,如果我这样做,那么函数会在每个分支的末尾请求一个return语句,这很混乱 Function createCategory(File image) { String title = _categoryTitle.value; if(image == null || title == null || title.length == 0) { return null; }
Javascript
中,当我想要结束一个函数时,我通常会写return,但在dart中,如果我这样做,那么函数会在每个分支的末尾请求一个return语句,这很混乱
Function createCategory(File image) {
String title = _categoryTitle.value;
if(image == null || title == null || title.length == 0) {
return null;
}
CategoryModel newCategory = new CategoryModel();
if(_categories.value == null) {
_categories.sink.add([newCategory]);
}
return null;
}
在dart中,正确的方法是什么 您可以这样做:
void createCategory(File image) {
String title = _categoryTitle.value;
if (image != null && title.isNotEmpty && _categories.value == null) {
_categories.sink.add([CategoryModel()]);
}
}
您可以这样做:
void createCategory(File image) {
String title = _categoryTitle.value;
if (image != null && title.isNotEmpty && _categories.value == null) {
_categories.sink.add([CategoryModel()]);
}
}
我认为您的困惑来自于您的方法是有效的Dart代码,但并没有真正做到我猜您所想的。您的方法具有以下签名:
Function createCategory(File image) {
这意味着您的方法名为createCategory
,采用File
类型的一个参数,并返回一个函数
。由于您已将方法标记为返回函数
,因此Dart将告诉您,如果您只是返回函数,则会出现问题因为这不是你想要的
如果您的方法不返回任何值,那么您希望使用返回类型void
来标记它,如:
void createCategory(File image) {
String title = _categoryTitle.value;
if (image == null || title == null || title.length == 0) {
return;
}
CategoryModel newCategory = new CategoryModel();
if (_categories.value == null) {
_categories.sink.add([newCategory]);
}
return;
}
我应该注意,最后一个返回可以跳过,因为Dart将自动添加返回如果函数缺少,则在函数末尾添加代码>。我认为您的混淆是因为您的方法是有效的Dart代码,但实际上并没有达到我猜您所想的效果。您的方法具有以下签名:
Function createCategory(File image) {
这意味着您的方法名为createCategory
,采用File
类型的一个参数,并返回一个函数
。由于您已将方法标记为返回函数
,因此Dart将告诉您,如果您只是返回函数,则会出现问题因为这不是你想要的
如果您的方法不返回任何值,那么您希望使用返回类型void
来标记它,如:
void createCategory(File image) {
String title = _categoryTitle.value;
if (image == null || title == null || title.length == 0) {
return;
}
CategoryModel newCategory = new CategoryModel();
if (_categories.value == null) {
_categories.sink.add([newCategory]);
}
return;
}
我应该注意,最后一个返回可以跳过,因为Dart将自动添加返回如果函数缺少,则在函数末尾进行编码>。谢谢,我知道我可以这样做,但当存在多个if语句且我希望避免使用else块时,问题就会出现。问题的关键是如何中断函数,而不是如何在不中断函数的情况下编写函数function@AdamKatz当然可以。:)谢谢,我知道我可以这样做,但问题是当有多个if语句时,我想避免使用else块。问题的关键是如何中断函数,而不是如何在不中断函数的情况下编写函数function@AdamKatz当然可以。:)感谢移除函数并添加void使其像我期望的那样工作感谢移除函数并添加void使其像我期望的那样工作