标签: conditional

三元运算符和A,B,否则C.是否存在重要差异?

在javascript中有几种方法可以做到这一点.

最重要,最具可读性和灵活性的可能是:

if (a){
    //b
}
else {
    //c
}
Run Code Online (Sandbox Code Playgroud)

其他只能用于分配且不太可读的东西是:

var foo = 'c';
if (a){
    foo = 'b';
}
Run Code Online (Sandbox Code Playgroud)

不过,我的主要问题是关于我能想到的最后两种方法:

var foo = a ? b : c;

var foo = a && b || c;
Run Code Online (Sandbox Code Playgroud)

这两个表达式之间有什么区别吗?除了缺乏可读性之外.

*尽管您可以将foo指定为函数,然后在if语句之后执行它.

javascript logic conditional boolean

-1
推荐指数
2
解决办法
2322
查看次数

如何有条件地关闭jQuery Overlay?

我正在为jQuery Overlay提供自定义关闭按钮.
单击此按钮时,我想验证Overlay中的表单,并且当且仅当表单有效时才关闭Overlay .

示例(不起作用......总是关闭,无论如何)

$('.trigger[rel]').overlay(
{
   close: '.ovclosebutton',
   onClose: function()
   {
      if( validateSomething() )
          this.getOverlay().close();
      else
          displayErrorInOverlayButDontCloseIt(); 
   }
});
Run Code Online (Sandbox Code Playgroud)

我该如何实现这一目标?

jquery conditional overlay callback

-1
推荐指数
1
解决办法
2480
查看次数

MySQL条件连接使用相同的表

我想用a做以下LEFT JOIN(请不要建议UNION ALL)

  SELECT o.*, s.col1, s.col2 FROM order o 
    INNER JOIN user u ON o.user_id = u.id

   IF o.date less than '2011-01-01'
      JOIN subscribe s ON u.key = s.key
   ELSE
       JOIN subscribe s ON u.email = s.email
   END IF;
Run Code Online (Sandbox Code Playgroud)

我使用以下但无法测试它.

SELECT o.*, COALESCE(s1.col1,s2.col1) AS 
   col1, COALESCE(s1.col2, s2.col2) AS col2
     FROM order o INNER JOIN user u ON o.user_id = u.id
     LEFT JOIN subscribe s1 ON 
     (u.key LIKE (CASE o.date >= '2011-01-01 00:00:00' 
                      WHEN TRUE THEN …
Run Code Online (Sandbox Code Playgroud)

mysql conditional join

-1
推荐指数
1
解决办法
465
查看次数

在没有警告(或编译指示)的情况下可移植地"在条件表达式中分配"的好方法?

我有一段这样的代码:

bool finished = false;
size_t offset = 0;
for (Iter i = items.begin();
          i != items.end() || (finished = !finished);
          finished ? i : ++i, ++offset)
{
    do_some_work();
    if (some_condition(other_collection[offset]))
    {
        i = items.insert(i, new_value());
        do_more_work();
        if (blah) { continue; }
    }
    do_more_work();
}
Run Code Online (Sandbox Code Playgroud)

目标是为所有迭代器执行主体,包括end().

我从Visual C++等编译器获得"条件表达式中的赋值"警告.

避免这些警告的最简单方法是什么?

我不想关闭它们(它们很有帮助)而且我不想插入#pragmas(它们在编译器之间不可移植).
我只想写一些简短的东西来告诉典型的编译器,"是的,我打算在这里分配".

我发现的最简单的解决方案是创建一个函数(例如assign)并调用它,但我想知道是否有任何方法也可以避免为此定义一个新函数.

c++ conditional variable-assignment

-1
推荐指数
2
解决办法
2129
查看次数

C++条件三元运算符

第11,12,15和16行正在获得错误:"int类型的无效操作数和const char [2]到二元运算符<<"(我删除了"`",因此它不会显示代码格式).

#include<iostream>

using namespace std;

int main(){

int md,dg,dd,mg,m,d;
cin >> md >> dg >> dd >> mg;

if (dd+dg==md+mg){
   cout << (mg>dg) ? 0 : 1 << " ";
   cout << (dg>mg) ? 0 : 1 << endl;
}
else{
      cout << (mg+md>dd+dg) ? 0 : (dd+dg-mg-md) << " ";
      cout << (dg+dd>md+mg) ? 0 : (md+mg-dg-dd) << endl;
}

system("pause");
}
Run Code Online (Sandbox Code Playgroud)

c++ conditional ternary operator-keyword

-1
推荐指数
1
解决办法
129
查看次数

我可以使用 if 语句来检查一个数字是否在一个范围内吗?

我已经开始编程,但我似乎无法回答问题。我想对一个变量数做一个 if 语句。

我可以在 if 语句中使用 range(0,15) 来查看数字是否在范围内吗?

如果是这样,如何?似乎无法找到有关此特定主题的任何信息。

python conditional if-statement range

-1
推荐指数
1
解决办法
8730
查看次数

如果另一个变量等于R中的设定值,如何用不同变量的值创建一个新变量?

我有一个复杂的问题,我将通过简化我的数据集来尝试简化.说我有5个变量:

df$Id <- c(1:12)
df$Date <- c(NA,NA,a,a,b,NA,NA,b,c,c,b,a)
df$va <- c(1.1, 1.4, 2.5, ...)     #12 randoms values
df$vb <- c(5.9, 2.3, 4.7, ...)     #12 other random values
df$vc <- c(3.0, 3.3, 3.7, ...)     #12 more random values
Run Code Online (Sandbox Code Playgroud)

然后我想创建一个新变量,如果日期等于a,b或c,则从va,vb或vc获取值.我曾尝试过嵌套的if-else,但是没有用.我也尝试过:

df$new[df$date=='a' & !is.na(df$date)] <- df$va
df$new[df$date=='b' & !is.na(df$date)] <- df$vb
df$new[df$date=='c' & !is.na(df$date)] <- df$vc
Run Code Online (Sandbox Code Playgroud)

这正确地将NA保留在新变量中,其中Date = NA,但是提供的值不是来自va,vb或vc,而是一些其他值.如果日期为'a',如果日期为'b',如果日期为'c',则如何获得等于va的df $ new;如果日期为'c',则为vc?

conditional r subset conditional-statements

-1
推荐指数
1
解决办法
1158
查看次数

Python 3给了我无法解决的错误

下面是代码:

import turtle
import math

def drawTree(segments,size):
    """
    :param segments: refers to number of extensions from the previous
    :param size: refers to the length of the initial extension
    """
    if (segments < 0.0 | size < 0.0):
        print("Invalid Input")
    elif (segments == 0 | size == 0):
        pass
    elif segments > 0:
        i = 1
        for i in range(6):
            turtle.down()
            turtle.forward(size)
            turtle.back(size)
            turtle.right(60)
            i -= 1
            if segments != 0:
                size *= (1/3)
                turtle.forward(size)
                turtle.back(size)
                segments -= 1
                drawTree(segments, size) …
Run Code Online (Sandbox Code Playgroud)

python conditional

-1
推荐指数
1
解决办法
32
查看次数

当a是数字时,while(!a)是什么意思?

试图破译这段C代码:

int WaitForPacket(uint16 milliseconds, Dexcom_packet* pkt, uint8 channel) {
uint32 start = getMs();
uint8 * packet = 0;
uint32 i = 0;
uint32 seven_minutes = 420000;
int nRet = 0;
swap_channel(nChannels[channel], fOffset[channel]);

while (!milliseconds || (getMs() - start) < milliseconds) {
    i++;
    if(!(i % 60000)) {
        strobe_radio(channel);
    }
    doServices();
    if((getMs() - start) > seven_minutes) {
        killWithWatchdog();
        delayMs(2000);
    }
    blink_yellow_led();
    if (packet = radioQueueRxCurrentPacket()) {
        uint8 len = packet[0];
        fOffset[channel] += FREQEST;
        memcpy(pkt, packet, min8(len+2, sizeof(Dexcom_packet)));
        if(radioCrcPassed()) {
            if(pkt->src_addr == dex_tx_id …
Run Code Online (Sandbox Code Playgroud)

c conditional while-loop

-1
推荐指数
1
解决办法
1603
查看次数

条件与内存分配的C#性能

考虑以下C#代码:

IntPtr native = GetNativeError(/* parameters here */);
return new ManagedError(native);
Run Code Online (Sandbox Code Playgroud)

然后客户端代码以下列方式检查错误:

ManagedError err = /* get it with the code above */;
if(err.IsOk()) {
    /* Success */
}
Run Code Online (Sandbox Code Playgroud)

这里的内存分配可以以if语句为代价来保存:

IntPtr native = GetNativeError(/* parameters here */);
if(native == IntPtr.Zero) {
    return null;
} else {
    return new ManagedError(native);
}
Run Code Online (Sandbox Code Playgroud)

然后客户端代码将检查错误,如下所示:

ManagedError err = /* get it with the code above */;
if(err == null) {
    /* Success */
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:哪种方法更快?第一个有额外的内存分配.第二个是附加if声明.

更新:我的意思是,在成功案例中.错误情况很少发生,可以慢.

c# performance conditional memory-management .net-core

-1
推荐指数
1
解决办法
272
查看次数