Dart 访问列表索引的安全方法
我是新手 我很难找到一种易于阅读的方法来“安全地”访问任何索引中的列表元素Dart 访问列表索引的安全方法,dart,Dart,我是新手 我很难找到一种易于阅读的方法来“安全地”访问任何索引中的列表元素 final List<String> myList = <String>[] myList.add("something") // ... String myGetter(int index) { // "heavy" way if (index < myList.length) { return myList[index] } return null; } fi
final List<String> myList = <String>[]
myList.add("something")
// ...
String myGetter(int index) {
// "heavy" way
if (index < myList.length) {
return myList[index]
}
return null;
}
final List myList=[]
myList.add(“某物”)
// ...
字符串myGetter(int索引){
//“沉重”的方式
如果(索引
如果我使用常规的[index]
或elementAt(index)
并且索引超出了边界,它会抛出一个RandeError
当无法访问索引时,是否有返回null的方法
抱歉,如果双重发布,但我试图找到信息,但没有任何成功,+不确定是否有(联合国)官方的懈怠/不和谐,问这种“简单”的问题
根据报告:
如果索引超出范围,则抛出RangeError
因此,您可以使用:
如果你想格外小心,我想你可以在最后放一个泛型的catch
(捕捉所有类型的抛出,而不是RangeError),但在这样一个简单的getter中,我认为这是不必要的:
[...]
}catch (e) {
// No specified type, handles all other types of error/exceptions
return null;
}
[...]
根据报告:
如果索引超出范围,则抛出RangeError
因此,您可以使用:
如果你想格外小心,我想你可以在最后放一个泛型的catch
(捕捉所有类型的抛出,而不是RangeError),但在这样一个简单的getter中,我认为这是不必要的:
[...]
}catch (e) {
// No specified type, handles all other types of error/exceptions
return null;
}
[...]
您可以定义一个来捕获范围错误
并返回null
:
void main() {
print([1, 2].get(3)); // display null
}
extension SafeLookup<E> on List<E> {
E get(int index) {
try {
return this[index];
} on RangeError {
return null;
}
}
}
void main(){
打印([1,2].get(3));//显示空值
}
扩展安全查找列表{
E get(整数索引){
试一试{
返回此[索引];
}论测距误差{
返回null;
}
}
}
您可以定义一个来捕获范围错误
并返回null
:
void main() {
print([1, 2].get(3)); // display null
}
extension SafeLookup<E> on List<E> {
E get(int index) {
try {
return this[index];
} on RangeError {
return null;
}
}
}
void main(){
打印([1,2].get(3));//显示空值
}
扩展安全查找列表{
E get(整数索引){
试一试{
返回此[索引];
}论测距误差{
返回null;
}
}
}
省道列表不允许使用无效索引。在尝试时,没有内置的方法获取null
。不在平台库中
您可以创建自己的助手函数(就像您已经做的那样):
T?tryGet(列表,整数索引)=>
索引<0 | |索引>=list.length?空:列表[索引];
(记住也要检查负指数)
根据建议,您还可以将其添加为扩展方法:
extension ListGetExtension<T> on List<T> {
T? tryGet(int index) =>
index < 0 || index >= this.length ? null : this[index];
}
extension ListGetExtension on List{
T?tryGet(内部索引)=>
index<0 | | index>=this.length?null:this[index];
}
这可能会让工作更愉快
(我建议不要做一些不好的事情,然后再捕捉错误,至少当你可以轻松地预先检查它是否坏的时候是这样的)。省道列表不允许使用无效索引。在尝试时,没有内置的方法获取
null
。不在平台库中
您可以创建自己的助手函数(就像您已经做的那样):
T?tryGet(列表,整数索引)=>
索引<0 | |索引>=list.length?空:列表[索引];
(记住也要检查负指数)
根据建议,您还可以将其添加为扩展方法:
extension ListGetExtension<T> on List<T> {
T? tryGet(int index) =>
index < 0 || index >= this.length ? null : this[index];
}
extension ListGetExtension on List{
T?tryGet(内部索引)=>
index<0 | | index>=this.length?null:this[index];
}
这可能会让工作更愉快
(我建议不要做一些不好的事情,然后再发现错误,至少当你可以轻松地预先检查它是否坏的时候)。你可以试试这个
void main() {
List<int> teste = [1, 2, 3, 4];
print(teste.get(1));
}
extension ListExtension<E> on List<E> {
dynamic get(int value) {
return this.contains(value) ? value : null;
}
}
void main(){
列表teste=[1,2,3,4];
打印(测试获取(1));
}
列表上的扩展名ListExtension{
动态获取(int值){
返回此。包含(值)?值:空;
}
}
您可以试试这个
void main() {
List<int> teste = [1, 2, 3, 4];
print(teste.get(1));
}
extension ListExtension<E> on List<E> {
dynamic get(int value) {
return this.contains(value) ? value : null;
}
}
void main(){
列表teste=[1,2,3,4];
打印(测试获取(1));
}
列表上的扩展名ListExtension{
动态获取(int值){
返回此。包含(值)?值:空;
}
}