dart - 简化 switch 语句
问题描述
我想总结一下下面的代码,让它越来越漂亮。
我有 5 个模型(User
、Group
、Event
、Member
、Appearance
),三个如下所示。
我想简化代码。
String getId(uri) {
String pathSegment;
if (uri.pathSegments.length >= 2) {
pathSegment = uri.pathSegments[1];
} else {
return null;
}
switch (resource) {
case 'users':
for (User user in models[resource]) {
if (user.id == pathSegment) {
return pathSegment;
} else {
return null;
}
}
break;
case 'groups':
for (Group group in models[resource]) {
if (group.id == pathSegment) {
return pathSegment;
} else {
return null;
}
}
break;
case 'events':
for (Event event in models[resource]) {
if (event.id == pathSegment) {
return pathSegment;
} else {
return null;
}
}
break;
default:
break;
}
return null;
}
解决方案
如果你的User
,Group
和Event
有一个共同的, 那么你可以通过使用typeid
来简化你的代码。dynamic
请参阅相关文档。
String getId(uri) {
String pathSegment;
if (uri.pathSegments.length >= 2) {
pathSegment = uri.pathSegments[1];
} else {
return null;
}
return _getIdFromItems(models[resource], pathSegment);
}
String _getIdFromItems(List<dynamic> items, String pathSegment) {
for (dynamic item in items) {
if (item.id == pathSegment) {
return pathSegment;
} else {
return null;
}
}
return null;
}
推荐阅读
- python - 如何将 100 个列表的一维(100,1)作为 keras 的输入
- swiftui - 用户位置焦点 SwiftUI
- flutter - Flutter 无效参数:超出最大调用堆栈大小
- javascript - 数字根(重复数字和)代码问题
- c++ - 谁能解释一下这个递归函数在 C++ 中是如何工作的?
- django - 在 Django 模型中查询
- javascript - 如何按文本内容(包括数字)对列表进行排序?
- python - 在Windows系统中运行python程序时系统找不到指定的路径
- node.js - Postman POST 请求停留在“发送请求”上(MongoDB 和 Node.js)
- android - 如何使用android中的对讲在textview中的多个链接之间滑动?