【问题标题】:Parse dynamic as int or fallback to a default value将动态解析为 int 或回退到默认值
【发布时间】:2019-03-08 08:40:10
【问题描述】:

我有一个包含动态值的映射,其中一个可以是 intstringnull(即不存在的键)。

我想将此值存储在int 变量中。我想出的解析结果非常麻烦:

Map<String, dynamic> map = {'maxposts': null}; // or 23 or '42'

// Try to parse an int value or fall back to 0
int maxposts = (map['maxposts'] is int) 
    ? map['maxposts'] 
    : int.tryParse(map['maxposts'] ?? '0') ?? 0;

有没有更好的方法来进行这种“try-fallback”解析?

【问题讨论】:

  • 我认为没有。

标签: dart flutter dynamic-typing


【解决方案1】:

你可以把操作抽象成一个函数,比如

int intOrStringValue(dynamic o) {
  if (o is String) o = int.tryParse(o);
  return o ?? 0;
}

int intOrStringValue(dynamic o) =>
    (o is String ? int.tryParse(o) : o) ?? 0;

当您不在整个逻辑中重复 map['maxposts'] 表达式时,它会变得更具可读性。

【讨论】:

    猜你喜欢
    • 2018-01-10
    • 2014-02-28
    • 2013-04-24
    • 1970-01-01
    • 1970-01-01
    • 2018-03-31
    • 2018-02-01
    • 2019-11-20
    • 1970-01-01
    相关资源
    最近更新 更多