标签: 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
查看次数

Java中Switch Case的替代方案

有没有其他方法可以在Java中实现一个switch case,而不是看起来不好看的else.根据选择相应的方法,必须执行一组值组合.

java conditional-statements

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

.NET 4的条件编译

可能重复:
C#条件编译和框架目标

我有一些代码在.NET 4中工作,但在.NET 3.5中不起作用,在.NET 3.5中它需要使用对Windows的互操作调用.

我想在两种情况下使用"ifdef"来使用不同的代码路径(最终我将弃用.NET 3.5代码).

是否有预定义的指令值来确定何时使用.NET4编译代码?是否有与所有预定义指令(DEBUG,TRACE,...)的良好链接?以下链接仅提供指令,但不提供标准预定义值:

http://msdn.microsoft.com/en-us/library/ed8yd1ha(v=VS.100).aspx

c# conditional-compilation .net-4.0 conditional-statements

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

如何在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
查看次数

C++三元运算符执行条件

我不确定C/C++三元运算符的执行保证.
例如,如果给出一个地址和一个布尔值来告诉该地址是否适合阅读,我可以使用if/else轻松避免错误读取:

int foo(const bool addressGood, const int* ptr) {
    if (addressGood) { return ptr[0]; }
    else { return 0; }
}
Run Code Online (Sandbox Code Playgroud)

但是?:,ptr除非addressGood是真的,否则三元运算符()可以保证不会被访问?
或者优化编译器是否可以生成ptr在任何情况下访问的代码(可能使程序崩溃),将值存储在中间寄存器中并使用条件赋值来实现三元运算符?

int foo(const bool addressGood, const int* ptr) {
    // Not sure about ptr access conditions here.
    return (addressGood) ? ptr[0] : 0;
}
Run Code Online (Sandbox Code Playgroud)

谢谢.

c c++ memory pointers conditional-statements

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

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

我们知道用符号表示:

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
查看次数

如果缺少Apt包,则应该执行任务

如果缺少特定的apt包,我正在寻找一系列任务.

例如:

如果没有安装石墨碳,请执行以下操作:

- apt: name=debconf-utils state=present
- shell: echo 'graphite-carbon/postrm_remove_databases boolean false' | debconf-set-selections
- apt: name=debconf-utils state=absent
Run Code Online (Sandbox Code Playgroud)

另一个例子:

如果未安装statsd,请执行以下操作:

- file: path=/tmp/build state=directory
- shell: cd /tmp/build ; git clone https://github.com/etsy/statsd.git ; cd statsd ; dpkg-buildpackage 
- shell: dpkg -i /tmp/build/statsd*.deb
Run Code Online (Sandbox Code Playgroud)

我怎么会开始破解这个?

我想也许我可以做某个-shell: dpkg -l|grep <package name>并以某种方式捕获返回代码.

apt conditional-statements ansible ansible-playbook

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

空对象设计模式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
查看次数