首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在model类中重用setter

在model类中重用setter
EN

Stack Overflow用户
提问于 2020-03-10 21:25:08
回答 1查看 45关注 0票数 0

我有一个用来查询数据库的模型类。一切正常,没有任何问题。我现在正在尝试改进我的模型类中的代码。以下是代码

代码语言:javascript
运行
复制
class HumanFilter {
  double age, maxAge, minAge, weight, minWeight, maxWeight, tall, minTall, maxTall, waist, minWaist, maxWaist;

set setMaxAge(String s) {
  if (s != null) {
    double parsed = double.tryParse(s) != null ? double.parse(s) : maxAge;
    minAge = minAge != null && parsed != null
        ? parsed <= minAge && minAge != 0 ? parsed - 1 : minAge
        : null;
    maxAge = parsed;
    age = parsed != null ? null : age;
  } else {
    maxAge = null;
  }
}

set setMinAge(String s) {
if (s != null) {
  double parsed = double.tryParse(s) != null ? double.parse(s) : minAge;
  minAge = parsed;
  maxAge = maxAge != null && parsed != null
      ? parsed >= maxAge ? parsed + 1 : maxAge
      : null;
  age = parsed != null ? null : age;
} else {
  minAge = null;
}
}

set setAge(String s) {
if (s != null) {
  double parsed = double.tryParse(s) != null ? double.parse(s) : age;
  age = parsed != null ? parsed : age;
  minAge = parsed != null ? null : minAge;
  maxAge = parsed != null ? null : maxAge;
} else {
  age = null;
}
}
// another setters for the rest of the parameters which are same as the code above
}

其余参数的setter与我为age提供的setter完全相同。例如,权重的设置器与年龄设置器相同,但设置minWeight、maxWeight和weight而不是minAge、maxAge和age.minTall和minAge等也是如此。

我想创建一个3个方法,它将获取min,max和nominal值,并返回3个值的列表或映射,然后我可以在setter方法中分配这些值,但是我也注意到min和max setter几乎是相同的,所以也可以重用。我只是找不到一个像样的方法来重用(智能)代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-10 23:36:50

分解副本的一种方法是提取类中的最小/最大/当前值:

代码语言:javascript
运行
复制
class Interval {
  double min;
  double max;
  double current;
}

这意味着在Interval上可以使用其中之一,而不是setMinAge+setMaxAge+...

代码语言:javascript
运行
复制
class Interval {
  double min;
  double max;
  double current;

  set setMax(String s) {
    if (s != null) {
      var parsed = double.tryParse(s) != null ? double.parse(s) : max;
      min = min != null && parsed != null
          ? parsed <= min && min != 0 ? parsed - 1 : min
          : null;
      max = parsed;
      current = parsed != null ? null : current;
    } else {
      max = null;
    }
  }

  // setMin
  // setCurrent
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60618589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档