标签: conditional-statements

用于处理复杂条件评估的设计模式

我的目的是维护一个系统,该系统考虑三个变量的值来确定将采取哪个操作。

我想重构它以使用设计模式,但找不到适合它需要的设计模式。

为了解释这种情况,我将以健身房系统为例。

每个健身房用户都有一个TYPE_OF_CONTRACT,可能是:

  • PLATINUM_会员资格
  • 金卡会员
  • 银级会员

健身房有一些GYM_CLASSES

  • 举重
  • 身体平衡
  • 纺纱
  • 尊巴舞
  • 个人培训

每个健身房用户都有一个PHYSICAL_CONDITION

  • 无限制
  • OVER_65
  • LIMITED_MOBILITY
  • 医疗条件
  • 下面_18

对于这三个特征的每种组合,都应该执行一组任意操作。例如:

如果是 PLATINUM_MEMBERSHIP + PERSONAL_TRAINING + OVER_65:

  1. 需要医疗批准
  2. 签署表格

如果是 GOLD_MEMBERSHIP + 个人培训 + OVER_65:

  1. 需要医疗批准
  2. 签署表格
  3. 额外月费

如果是 SILVER_MEMBERSHIP + PERSONAL_TRAINING + OVER_65:

  1. 拒绝订阅

如果(任何会员资格)+ 步骤 + 医疗条件:

  1. 需要医疗批准
  2. 签署表格

如果 PLATINUM_MEMBERSHIP + WEIGHT_LIFTING + LIMITED_MOBILITY:

  1. 需要医疗批准
  2. 签署表格
  3. 专职工作人员协助

等等。

特征的组合可以具有一组动作,这些动作不是排他性的并且并非所有组合都得到保证。

遗留代码使用嵌套开关作为实现。例子:

switch (contractType):

    case PLATINUM_MEMBERSHIP:

        switch (gymClass):            

            case (PERSONAL_TRAINING):

                switch (physicalCondition):            

                    case (OVER_65): …
Run Code Online (Sandbox Code Playgroud)

java refactoring design-patterns conditional-statements

5
推荐指数
1
解决办法
3091
查看次数

Java中的if语句是多余的

我在 NetBeans 上看到一个消息:“if 语句是多余的”

我想知道这两个如何相等

public boolean isVowel(char in)
{
    char temp = Character.toLowerCase(in);

    if (temp == 'a' || temp == 'e' || temp == 'i' || temp == 'o' || temp == 'u')
    {
        return true;
    }
    else
    {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

public boolean isVowel(char in)
{
    char temp = Character.toLowerCase(in);

    return temp == 'a' || temp == 'e' || temp == 'i' || temp == 'o' || temp == 'u';
}
Run Code Online (Sandbox Code Playgroud)

我可以看到如果元音之一与 temp 匹配,它将如何返回 true。但是,我不知道它如何返回 false。如果没有满足任何条件,它会直接返回 …

java if-statement return conditional-statements

5
推荐指数
1
解决办法
1万
查看次数

通过否定查找匹配(基于缺失的字符串)

我已经在谷歌上搜索了很多关于这个的信息。我想要实现的目标是:如果 MIME 不是特定类型,我必须检查正则表达式条件。

例如,我收到了下一条消息:

image/png, image/jpeg, document/pdf
Run Code Online (Sandbox Code Playgroud)

我只想检测document/pdf部分,它是一个 MIME 类型,一个字符串,不以 image/ 开头

但无论我多么努力地寻找、尝试和使用 RegExBody 软件,我都完全无法匹配它。

我绝望地发布这篇文章,希望也许专家正则表达式可以帮助我。

我尝试了很多方法,主要是:找出非图像类型,不管有没有。

它只是拒绝工作。我尝试了正向预测和负向预测。但我可能用错了。我无法发布这些示例,因为我已经尝试并删除了很多示例。看起来真正接近工作的是,\b(?:(?!image/\w+))\w+\b但它只是坚持选择不匹配模式的第二部分。如果我使用:image/png 它会得到:png 这意味着它仍然会返回 true,尽管我的意思是忽略image/类型。

regex string mime conditional-statements

5
推荐指数
1
解决办法
5717
查看次数

使用 mongodb 中的条件将字段添加到集合中

我想将一个新的布尔字段添加到包含其他字段信息的集合中。

我的样本数据是;

{ 
    "_id" : ObjectId("50abae61edecb53c740022eb"), 
    "pull_request" : {
        "diff_url" : null, 
        "patch_url" : null, 
        "html_url" : null
    }
}
{ 
    "_id" : ObjectId("50abae61edecb53c740022ec"), 
    "pull_request" : {
        "diff_url" : "https://github.com/joyent/http-parser/pull/106.diff", 
        "patch_url" : "https://github.com/joyent/http-parser/pull/106.patch", 
        "html_url" : "https://github.com/joyent/http-parser/pull/106"
    }, 
} 
Run Code Online (Sandbox Code Playgroud)

新字段是“hasPullRequest”;如果 pull_request 字段为空,则 hasPullRequest:false; 否则 hasPullRequest:true。我的意思是下面的;

{ 
    "_id" : ObjectId("50abae61edecb53c740022eb"), 
    "pull_request" : {
        "diff_url" : null, 
        "patch_url" : null, 
        "html_url" : null
    },
    "hasPullRequest" : false
}
{ 
    "_id" : ObjectId("50abae61edecb53c740022ec"), 
    "pull_request" : {
        "diff_url" : "https://github.com/joyent/http-parser/pull/106.diff", 
        "patch_url" : "https://github.com/joyent/http-parser/pull/106.patch", 
        "html_url" : …
Run Code Online (Sandbox Code Playgroud)

set mongodb conditional-statements aggregation-framework

5
推荐指数
2
解决办法
2万
查看次数

mongodb - 具有多个标识符和混合条件(AND/OR)的 arrayFilters

我试图做一个匹配一些嵌套数组条件的 mongodb 查询,但没有成功......

文件:

[
   {
      "_id":1,
      "name":"foo",
      "games":[
         {
            "name":"Game1",
            "data":[
               { "data_id":1, "date":"YYYMMDD" },
               { "data_id":2, "date":"YYYMMDD" }
            ]
         },
         {
            "name":"Game2",
            "data":[
               { "data_id":1, "date":"YYYMMDD" },
               { "data_id":2, "date":"YYYMMDD" }
            ]
         }
      ]
   },
   {
      "_id":2,
      "name":"bar",
      "games":[
         {
            "name":"Game2",
            "data":[ 
               { "data_id":1, "date":"YYYMMDD" },
               { "data_id":2, "date":"YYYMMDD" }
            ]
         }
      ]
   }
]
Run Code Online (Sandbox Code Playgroud)

我想做一个update_many,匹配以下数据:

all documents
AND ( (_id = 1 and games.name = 'Game1' and games.data.data_id = 1 ) OR (_id = 2 and games.name …
Run Code Online (Sandbox Code Playgroud)

mongodb conditional-statements

5
推荐指数
1
解决办法
1523
查看次数

如何:使用条件自定义背景视图作为背景修改器?

通常,如何使用三元运算符对修饰符进行条件更改是很简单的。但是当我尝试在背景修改器的两个自定义视图之间切换时,我收到此错误。如果您直接指定颜色作为替代视图,则情况并非如此。

错误:结果值在 '? :' 表达式的类型 'BackgroundView1' 和 'BackgroundView2' 不匹配

import SwiftUI

struct TestView: View {

@State var buttonPressed = false

var body: some View {

    Button(action: {self.buttonPressed.toggle()}) {

        Image(systemName: "circle.fill")
            .background(self.buttonPressed ? BackgroundView1() : BackgroundView2()) // Error
//                .background(buttonPressed ? Color.red : Color.green)
    }

}
}

struct BackgroundView1: View {

var body: some View {

    Color.red

    }
}

struct BackgroundView2: View {

var body: some View {

    Color.green

}
}

struct TestView_Previews: PreviewProvider {
static var previews: some View …
Run Code Online (Sandbox Code Playgroud)

background view modifier conditional-statements swiftui

5
推荐指数
1
解决办法
2507
查看次数

如何将两个不同训练的 ML 模型合并为一个?

我根据两个不同的数据集训练了两个机器学习模型。然后我将它们保存为 model1.pkl 和 model2.pkl 。有两个用户输入(不是模型的输入数据),例如 x=0 和 x=1,如果 x=0 我必须使用 model1.pkl 进行预测,否则我必须使用 model2.pkl 进行预测。我可以使用 if 条件来完成它们,但我的问题是我必须知道是否有可能将其保存为 model.pkl ,包括此条件语句。如果我将它们组合起来并另存为模型,则可以轻松加载到其他 IDE 中。

model machine-learning pickle conditional-statements pandas

5
推荐指数
1
解决办法
8632
查看次数

没有`else`的Julia三元运算符

考虑 Julia 中的三元运算符

julia> x = 1 ; y = 2

julia> println(x < y ? "less than" : "not less than")
less than
Run Code Online (Sandbox Code Playgroud)

问题:有没有办法省略:语句的一部分?相当于

if condition
    # dosomething
end
Run Code Online (Sandbox Code Playgroud)

没有写,如果条件不满足,什么都不应该做。

注意:我研究了答案,但没有任何结果,即使在相关问题 ( 1 , 2 )

syntax if-statement conditional-operator conditional-statements julia

5
推荐指数
2
解决办法
143
查看次数

dplyr r :选择名称位于外部向量中的列

目的

我可以使用dplyr列名位于外部向量中的条件来选择列吗?我发现一些帖子解释了如何使用名称向量对数据框进行子集化,但当向量中的某些名称在数据框中不存在时,我找不到帖子。

示例数据集

  library(tidyverse)
  library(tibble)
  library(data.table)
  
  col_names <- c('a', 'b', 'e')
  
  rename <- dplyr::rename
  select <- dplyr::select
  
  set.seed(10002)
  a <- sample(1:20, 1000, replace=T)
  
  set.seed(10003)
  b <- sample(letters, 1000, replace=T)
  
  set.seed(10004)
  c <- sample(letters, 1000, replace=T)
  
  
  data <-   
    data.frame(a, b, c) 
# I would like to choose a, b that are in col_names vector. 
Run Code Online (Sandbox Code Playgroud)

select r conditional-statements dplyr

5
推荐指数
1
解决办法
8380
查看次数

如何找到用户输入的总和?

print("Fazli's Vet Services\n")
print("Exam: 50")
print("Vaccinations: 25")
print("Trim Nails: 5")
print("Bath: 20\n")

exam = "exam"
vaccinations = "vaccinations"
trim_nails = "trim nails"
bath = "bath"
none = "none"

exam_price = 50
vaccination_price = 25
trim_nails_price = 5
bath_price = 20
none_price = 0

first_service = input("Select first service:")
second_service = input("Select second service:")

print("\nFazli's Vet Invoice")

if first_service == exam:
    print("Service 1 - Exam: " + str(exam_price))
elif first_service == vaccinations:
    print("Service 1 - Vaccinations: " + str(vaccination_price))
elif first_service …
Run Code Online (Sandbox Code Playgroud)

python conditional-statements

5
推荐指数
1
解决办法
123
查看次数