Salesforce Apex If 语句与 OR 逻辑

问题描述 投票:0回答:1

我喜欢在 Apex 代码中编写具有以下逻辑的 If 语句:

变量 myVariableString 可以为空白、空、ValueA、ValueB、ValueC,或者,这里我假设,因为变量从外部 OCR-ML-API 获取其值,所以可能会出现 ValueN。

如果 myVariableString 为空或 myVariableString 不是 ValueA 或 ValueB,则 If 语句应为 true,并且应执行以下中断。

或者

如果 myVariableString 为空或 myVariableString 为 ValueC 或任何其他 ValueN,则为 ValueA 和 ValueB,则 If 语句应为 true,并且应执行以下中断。

所以我尝试了以下方法:

if (String.isBlank(fineCategory) || (fineCategory.containsIgnoreCase('ValueC'))) {
              break;
            }

这是目前最好的 if 语句,但会是 false,并且当出现可能的 ValueN 时不会执行中断。

if (String.isBlank(fineCategory) || !fineCategory.containsIgnoreCase('ValueA') || !fineCategory.containsIgnoreCase('ValueB'))) {

我敢打赌,我只需要在正确的位置添加 ( 和 ) 即可。

也许有人可以帮助我。一切顺利, 斯文

if-statement salesforce apex apex-code
1个回答
0
投票
  List<String> notAllowedValues = new List<String>{'valuea', 'valueb'};

  for(String myVariableString  : new List<String>{null, '', 'ValueA', 'ValueB', 'ValueC', 'ValueN'}){
    if(String.isBlank(myVariableString ) || notAllowedValues.contains(myVariableString.toLowerCase())){
      break;
    }

    /* ... */
  }

不要将允许(或未分配)的选项锁定在独占语句上,想想今天你有两个不允许的选项,明天你可以有 50 个,如果你为每个选项添加一个 if 语句,请考虑它的大小。

创建一个列表(可以从自定义设置、自定义标签或自定义元数据等对象中检索)并应用您的规则。因此,随着您的应用程序的增长,您的代码将保存它并且易于阅读。

© www.soinside.com 2019 - 2024. All rights reserved.