【问题标题】:Android - Changing variables in a formula dynamicallyAndroid - 动态更改公式中的变量
【发布时间】:2013-03-10 19:05:23
【问题描述】:

我陷入了一个看似简单的问题,可能有一种简单的方法可以解决它,但无论如何我都需要帮助。

我需要使用一组常量来评估公式,应该根据用户的选择动态选择。见代码:

double constOne=2.3, constTwo=1.1, constThree=1.7...; //and so on

public double doSomething(int inputOne, String selection){

    //being const... one of the double vars defined above, 
    //selected based on the String selection
    return inputOne*const...; 
}

我知道我可以使用双精度数组并将数组上的位置传递给 doSomething() 来做到这一点,但这是非常硬编码的,我真的不喜欢那样做。

有没有办法动态引用 constOne、constTwo 等?谢谢!

PS:是的,我知道这可能是一个愚蠢的问题,我正在学习!

【问题讨论】:

  • 除非常量需要在这里,否则为什么不将双精度值与其他参数一起传递给函数?
  • 使用地图怎么样?你觉得这有什么问题吗?这似乎是一个完美的解决方案,但让我想知道为什么我之前没有找到那个解决方案。
  • 我认为它可能会起作用,但我不确定是否有必要。它认为艾哈迈德给出的答案或我的建议可能更清晰和/或更容易。但是你可以试试看它是否适合你

标签: android reference formula dynamic-variables


【解决方案1】:

我并没有真正看到在数组中声明常量的问题。

但是,如果您真的反对,您可以编写一个辅助函数,该函数将接收选择器字符串并返回常量。这可以让你的代码更干净

double getConstant(String selector) {
    // some logic
}

那么你的其他功能会更干净一些

public double doSomething(int inputOne, String selection){

    //being const... one of the double vars defined above, 
    //selected based on the String selection
    return inputOne * getConstant(selection); 
}

这样做的好处是您从选择器中选择常量的逻辑将在一个地方,而不是在您需要常量的所有函数中。

【讨论】:

  • 其实想想,这似乎是最好的选择。 Map/HashMap 也可以解决这个问题,但这就像用猎枪杀死苍蝇一样。另一种解决方案是使用数组,但我不想那样做,因为我应该一直考虑索引/内容相关性,这使得代码更难维护,也难以调试。谢谢!
猜你喜欢
  • 2022-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-14
  • 1970-01-01
  • 2011-06-24
  • 1970-01-01
  • 2016-08-31
相关资源
最近更新 更多