标签: conditional-statements

如何在Ruby中不使用'then'或'end'来编写'if'

我发现在Ruby中编写相同条件的三种方法:

#1
if 1==1 
  puts "true" 
end

#2
puts "true" if 1==1

#3
if 1==1  then puts "true" end
Run Code Online (Sandbox Code Playgroud)

为什么我不能这样做?

#4
if 1==1 puts "true"
Run Code Online (Sandbox Code Playgroud)

我不明白:

  1. 为什么然后结束都需要在#3和,
  2. 为什么我需要更改订单以使#2工作.

声明#4似乎是最自然的写作方式.我不明白为什么不可能.

ruby syntax conditional-statements

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

给定一组条件,通过算法确定只有一个可以为True

给定一组两个或更多逻辑条件,是否可以通过算法确定其中一个将评估为TRUE?例如:

# this should pass, since for every X, only one condition is taken
cond 1: (X >= 1.0) 
cond 2: (X < 1.0)

# this should fail
cond 1: (X < 1.0)
cond 2: (X > 2.0)

# this should also fail, since X=1.0 would meet both conditions
cond 1: (X < 2.0)
cond 2: (X > 0.0)

# there may be more than one variable involved
cond 1: (X >= 1.0 && Y >= 0)
cond 2: (X …
Run Code Online (Sandbox Code Playgroud)

language-agnostic algorithm validation logic conditional-statements

8
推荐指数
1
解决办法
1237
查看次数

如何在数据库中存储PHP条件文件以供以后使用?

在我们当前的应用程序中,我有一个包含以下内容的报告:

if($foo == 3 || $bar > 3) {
    $e = someFunction();
};
Run Code Online (Sandbox Code Playgroud)

但对于同一表达式可能是不同的客户端:

if($foo == 3 || $bar == 5 && $foobar != 9) {
    $e = someFunction();
};
Run Code Online (Sandbox Code Playgroud)

有没有一种直接的方式来存储两个不同的表达式,只有

$foo == 3 || $bar > 3 OR $foo == 3 || $bar == 5
Run Code Online (Sandbox Code Playgroud)

数据库中的位(MySQL)所以我不必通过客户端硬编码所有这些规则或维护同一报告的客户端版本.我试图找出是否可以设置变量o替换条件.就像是:

$conditions = $row_rsConditions['condition_row']    //Get $foo == 3 || $bar > 3 from the DB and store it as $conditions
if($conditions) {
    $e = someFunction();
};
Run Code Online (Sandbox Code Playgroud)

可能有> 100个不同的客户端,每个客户端可能/将有一组不同的表达式.我只是不确定这样做的正确/最佳方式.

更新:

我想我使用PHP的eval()函数理解这些问题.但是由于可能的组合数量,我倾向于使用DB来存储条件(不确定是否还在使用eval())

如果没有面向用户的接口写入条件字段/表,是否会产生任何差异(更安全)?这可能是我们单独管理的事情.

php conditional-statements

8
推荐指数
1
解决办法
2377
查看次数

PostgreSQL创建一个新列,其值以其他列为条件

我使用PostgreSQL 9.1.2并且我有一个基本表,如下所示,我将条目的生存状态作为布尔值 (Survival)以及天数(Survival(Days)).

我手动添加了一个名为的新列1-yr Survival,现在我想为表中的每个条目填写此列的值,条件是该条目的值SurvivalSurvival (Days)列值.一旦完成,数据库表将如下所示:

Survival    Survival(Days)    1-yr Survival
----------  --------------    -------------
Dead            200                NO
Alive            -                 YES
Dead            1200               YES
Run Code Online (Sandbox Code Playgroud)

输入条件值的伪代码1-yr Survival将类似于:

ALTER TABLE mytable ADD COLUMN "1-yr Survival" text
for each row
if ("Survival" = Dead & "Survival(Days)" < 365) then Update "1-yr Survival" = NO
else Update "1-yr Survival" = YES
end 
Run Code Online (Sandbox Code Playgroud)

我相信这是一个基本的操作,但我没有找到postgresql语法来执行它.一些搜索结果返回"添加触发器",但我不确定这是我所需要的.我认为我的情况要简单得多.任何帮助/建议将不胜感激.

postgresql insert-update conditional-statements

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

C++:仅在未设置时设置bool值

我的C++应用程序中的代码通常会这样做:

bool myFlag = false;
while (/*some finite condition unrelated to myFlag*/) {
    if (...) {
        // statements, unrelated to myFlag
    } else {
        // set myFlag to true, perhaps only if it was false before?
    }
}
if (myFlag) {
    // Do something...
}
Run Code Online (Sandbox Code Playgroud)

我的问题与else我的代码声明有关.基本上,我的循环可以根据某个未满足的条件将myFlag的值从false设置为true.永远不会将旗帜从真假转为虚假.我想知道哪种语句在性能方面更有意义,并且可能由于编译器优化而导致此问题实际上不是问题.

myFlag = true;
Run Code Online (Sandbox Code Playgroud)

要么

if (!myFlag) myFlag = true;
Run Code Online (Sandbox Code Playgroud)

我通常会选择前者,因为它需要编写更少的代码.然而,我开始怀疑它可能涉及不必要的写入记忆,因此后者会阻止不必要的写作,如果myFlag已经是真的.但是,使用后者会花费更多时间,因为有一个条件语句,因此使用更多指令编译代码?

或许我过分思考这个......


更新1

只是澄清一下......后一种情况的目的是如果变量已经为真,则不写入内存.因此,只有在变量为false时才写入内存.

c++ boolean variable-assignment compiler-optimization conditional-statements

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

AngularJS:ng-if布尔条件不起作用?

为什么ng-if在这个例子中对我不起作用,但ng-show确实是JSFiddle:

<div ng-if="false">text</div>
<div ng-show="false">text2</div>
Run Code Online (Sandbox Code Playgroud)

以及如何解决这个问题?

conditional-statements angularjs

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

R - 选择满足多个条件的矩阵行的最快方法

这是关于返回满足 R 条件的矩阵行的问题的扩展.说我有矩阵:

       one two three four
 [1,]   1   6    11   16
 [2,]   2   7    12   17
 [3,]   3   8    11   18
 [4,]   4   9    11   19
 [5,]   5  10    15   20
 [6,]   1   6    15   20
 [7,]   5   7    12   20
Run Code Online (Sandbox Code Playgroud)

我想尽快返回所有行,其中matrix$two == 7AND matrix$three == 12.这是我所知道的方式:

 out <- mat[mat$two == 7,]
 final_out <- out[out$three == 12, ]
Run Code Online (Sandbox Code Playgroud)

显然应该有一种方法来获取final_out单行内容,例如: final_out <- which(mat$two == 7 && mat$three == 12)比上面的两行代码更快,更简洁.

返回此多条件矩阵查询的最快R代码是什么?

performance r matrix multiple-columns conditional-statements

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

等待x秒或直到条件成立为止

如何等待x秒或直到条件变为真?应该在等待时定期测试这种情况.目前我正在使用此代码,但应该有一个简短的功能.

for (int i = 10; i > 0 && !condition(); i--) {
    Thread.sleep(1000);
}
Run Code Online (Sandbox Code Playgroud)

java sleep conditional-statements

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

"IndexError:位置索引器超出范围",当它们明显没有时

这是我正在使用的一些代码的MWE.我通过切片和一些条件慢慢缩小初始数据帧,直到我只有我需要的行.每行五行实际上代表一个不同的对象,因此,当我减少一些事情时,如果每个五个块中的任何一行符合条件,我想保留它 - 这就是keep.index完成的循环.无论如何,当我完成时,我可以看到我想要的最终索引存在,但是我收到一条错误消息"IndexError:位置索引器超出范围".这里发生了什么?

import pandas as pd
import numpy as np

temp = np.random.rand(100,5)

df = pd.DataFrame(temp, columns=['First', 'Second', 'Third', 'Fourth', 'Fifth'])

df_cut = df.iloc[10:]

keep = df_cut.loc[(df_cut['First'] < 0.5) & (df_cut['Second'] <= 0.6)]

new_indices_to_use = []
for item in keep.index:
    remainder = (item % 5)
    add = np.arange(0-remainder,5-remainder,1)
    inds_to_use = item + add
    new_indices_to_use.append(inds_to_use)

new_indices_to_use = [ind for sublist in new_indices_to_use for ind in sublist]
final_indices_to_use = []
for item in new_indices_to_use:
    if item not in final_indices_to_use:
        final_indices_to_use.append(item)

final …
Run Code Online (Sandbox Code Playgroud)

python conditional-statements dataframe pandas

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

用于处理非空对象和非空字符串表示的Kotlin习语

我有一个可以为null的属性(一个Java对象)知道如何将自己转换为String,如果这个表示不为空,我想用它做一些事情.在Java中,这看起来像:

MyObject obj = ...
if (obj != null) {
    String representation = obj.toString();
    if (!StringUtils.isBlank(representation)) {
        doSomethingWith(representation);
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在努力寻找将此转换为Kotlin的最惯用的方式,我有:

    with(obj?.toString()) {
        if (!isNullOrBlank()) {
            doSomethingWith(representation)
        }
    }
Run Code Online (Sandbox Code Playgroud)

但对于这样一个简单的操作,它仍然感觉太多了.我有这种感觉,结合let,whenwith我可以苗条下来的东西有点短.

步骤是:

  1. 如果对象(A)不为null
  2. 如果对象(A)的字符串表示(B)不是空白
  3. 用(B)做点什么

我试过了:

    when(where?.toString()) {
        isNullOrBlank() -> builder.append(this)
    }
Run Code Online (Sandbox Code Playgroud)

但是(1)它失败了:

Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: @InlineOnly public inline fun 
 CharSequence?.isNullOrBlank(): Boolean defined in kotlin.text @InlineOnly public inline fun CharSequence?.isNullOrBlank(): Boolean defined in 
 kotlin.text …
Run Code Online (Sandbox Code Playgroud)

nullable tostring conditional-statements kotlin

8
推荐指数
1
解决办法
879
查看次数