标签: conditional-statements

如果函数中的语句是最好的方法

如果我有一个具有大量条件的功能,那么组织它的最佳方法是什么?

我担心的是其他人进入代码并了解正在发生的事情.即使示例很简单,也可以想象条件非常复杂.

举个例子:

public void function(string value, string value2)
{
    if (value == null)
        return;

    if (value2 == value)
        DoSomething();
}
Run Code Online (Sandbox Code Playgroud)

要么

public void function(string value, string value2)
{
    if (value != null)
    {
        if (value2 == value)
            DoSomething();
    }
}
Run Code Online (Sandbox Code Playgroud)

要么

public void function(string value, string value2)
{
    if (value != null && value2 == value)
        DoSomething();
}
Run Code Online (Sandbox Code Playgroud)

coding-style conditional-statements

9
推荐指数
3
解决办法
446
查看次数

如何在ifelse语句中忽略NA

我从SAS来到R,数字缺失设置为无穷大.所以我们可以说:

positiveA = A > 0;
Run Code Online (Sandbox Code Playgroud)

在R中,我必须像下面这样冗长:

positiveA <- ifelse(is.na(A),0, ifelse(A > 0, 1, 0))
Run Code Online (Sandbox Code Playgroud)

我发现这种语法很难阅读.无论如何我可以修改ifelse函数来考虑NA是一个特殊值,对于所有比较条件总是假的吗?如果没有,考虑NA作为-Inf也会起作用.

同样,在字符变量的ifelse语句中将NA设置为''(空白).

谢谢.

r conditional-statements

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

如果needle为0,则in_array返回true

我有in_array功能问题.以下测试返回true:

in_array(0, array('card', 'cash'))
Run Code Online (Sandbox Code Playgroud)

怎么不可能,我怎么能阻止呢?

然而

in_array(null, array('card', 'cash'))
Run Code Online (Sandbox Code Playgroud)

回报false.

php arrays conditional-statements

9
推荐指数
2
解决办法
2259
查看次数

类中的条件语句,但在函数范围之外

我们知道用符号表示:

class Foo(object):

    a = 1

    def __init__(self):
        self.b = 2

    def c(self):
        print('c')
Run Code Online (Sandbox Code Playgroud)

我们可以创建静态变量Foo.a,'normal'变量b,它将在创建和实例Foo以及方法之后可用c

今天我真的很惊讶,我可以在类中使用条件语句,但不在函数范围内

class C():
    if True:
         a = 1
    b = 2
Run Code Online (Sandbox Code Playgroud)

像C++/Java这样的语言告诉我法律符号类似于:

class Name():
    variable = <expression>
Run Code Online (Sandbox Code Playgroud)

你能描述一下其他规则吗?我该如何命名这个范围?

python scope class conditional-statements

9
推荐指数
1
解决办法
5496
查看次数

空对象设计模式Vs null对象检查

为什么null对象设计模式优于null对象检查.如果我们在null对象设计模式中查看内存占用,我们将创建一个相同类型的新虚拟对象.如果我们在搜索查询中有大对象和大量可空对象的对象,则该模式将创建大量空对象,这将占用比简单检查更多的内存,对于null,我的成本可忽略的性能延迟.

空对象设计模式

java design-patterns nullable conditional-statements

9
推荐指数
1
解决办法
3368
查看次数

如何在条件满足之前用N个行中的一些对条件行进行子集化,比我的代码更快?

由于我的数据集是时间序列,因此我有30个不同的数据帧,每个数据帧的行数都超过10,000。我想检查一下温度值低于40之前的趋势。

因此,我想在温度值低于40时对行进行子集化,并且还希望在温度值低于40之前对24行进行子集化。

我已经尝试了一些代码,下面工作的唯一代码。但是子集需要更长的时间(例如,一个数据帧超过10分钟)。因此,我的代码很糟糕。所以我想知道python中可以更快子集的代码。你们能帮我吗?

df=temperature_df.copy()
drop_temperature_df=pd.DataFrame()

# get the index during drop temperature
drop_temperature_index=np.array(df[df[temperature]<40].index)

# subset the data frame for 24 hours before drop temperature
for i,index in enumerate(drop_temperature_index):
    drop_temperature_df=drop_temperature_df.append(df.loc[index-24:index,:])

K['K_{}'.format(string)]=drop_temperature_df.copy() #save the subset data frame
Run Code Online (Sandbox Code Playgroud)

因此,像下面的数据一样,我在1/26/2018 0800的温度点低于40,所以,我想在40以下的温度子集使用之前的24行(1/25/2018 0800直到1/26/2018 0800)。

在此处输入图片说明

python subset slice conditional-statements pandas

9
推荐指数
1
解决办法
116
查看次数

gitlab-ci.yml 中的条件变量

根据构建来自的分支,我需要使用稍微不同的命令行参数。特别是我想在从分支构建时上传快照关系工件,并在构建主时释放工件。

有没有办法有条件地改变变量?

我尝试使用像这样的 except/only 关键字

stages:
    - stage


variables:
    TYPE: Release


.upload_common:
    stage: stage
    tags: ["Win"]
    script: 
        - echo Uploading %TYPE%


.upload_snapshot:
    variables:
        TYPE: "Snapshot"
    except:
        - master


upload:
    extends: 
        - .upload_common
        - .upload_snapshot
Run Code Online (Sandbox Code Playgroud)

不幸的是,它在构建 master 时跳过了整个上传步骤。

我在这里使用“扩展”模式的原因是我有 win 和 mac 平台,它们使用稍微不同的变量替换语法($ vs %)。我还有一些不同的构建配置 - 调试/发布,32 位/64 位。

下面的代码确实有效,但我不得不重复发布和快照的步骤,一次启用一个。

stages:
    - stage


.upload_common:
    stage: stage
    tags: ["Win"]
    script: 
        - echo Uploading %TYPE%


.upload_snapshot:
    variables:
        TYPE: "Snapshot"
    except:
        - master

.upload_release:
    variables:
        TYPE: "Release"
    only:
        - master


upload_release:
    extends: 
        - .upload_common …
Run Code Online (Sandbox Code Playgroud)

variables conditional-statements gitlab-ci

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

Terraform:如果满足条件,则设置可选资源属性,否则不声明它

Terraform 上的一些资源支持可选属性。我有兴趣仅在满足条件时才声明和设置可选属性的值。否则,根本不要声明它。

我发现的所有建议都是基于声明属性并将其值设置为null如果条件不满足,而不是根本不声明属性。

我有办法做类似以下的事情吗?在伪代码中:

resource "some_resource" "this" {
  name = var.name

  if var.name == "some_name":
    some_optional_attribute = "some_value"
  else:
    pass  # do nothing, don't even declare the optional attribute
}
Run Code Online (Sandbox Code Playgroud)

请告诉我,提前谢谢!

conditional-statements terraform hcl terraform0.12+

9
推荐指数
1
解决办法
8894
查看次数

if($ ext ==('zip'||'png')){echo"有可能吗?" }

我现在正在编写一个下载管理器,我问自己是否可能:

if($ext == ('zip' || 'png')) { echo "Is it possible ?" }
Run Code Online (Sandbox Code Playgroud)

它每次都返回true,所以我想这是不可能的.但是你知道我怎么能轻易做到这一点吗?我的意思是,没有足够的"if"或"switch"......

不管怎么说,还是要谢谢你 !:)

php operators conditional-statements

8
推荐指数
3
解决办法
921
查看次数

JPA条件查询中的条件where子句

我正面临JPA标准查询的问题.如何在条件查询中使用if else添加多个where子句...

我的要求是:

CriteriaBuilder builder = getEm().getCriteriaBuilder();
CriteriaQuery<Object> query = builder.createQuery(Object.class);

// From
Root<EntityClass> entity= query.from(EntityClass.class);
// Select
query.multiselect(entity.get("id").get("col1"),entity.get("id").get("col2"));
// Where
Predicate p1 = builder.and(builder.equal(entity.get("col3"), value3));
Predicate p2 = builder.and(builder.equal(entity.get("col4"), value4));
Predicate p3 = builder.and(builder.equal(entity.get("col5"), value5));
if(someCondition1){
    query.where(p1);
}else if(someCondition2){
    query.where(p1);
}
query.where(p3);
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,语句query.where(p3); 替换先前设置的where子句条件p1和p2.我发现的替代品是如下所示

if(someCondition1){
    query.where(p1, p3);
}else if(someCondition2){
    query.where(p2, p3);
}else{
    query.where(p3);
}
Run Code Online (Sandbox Code Playgroud)

但这不是一个好方法,因为当有很多if-else时,编写重复代码变得非常糟糕.任何人都可以为此解决问题吗?

jpa predicate where-clause criteria-api conditional-statements

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