标签: conditional-statements

测试是否没有给出位置参数的惯用方法?

如果没有给出位置参数,在 Bash 中测试最惯用的方法是什么?有很多方法可以检查这一点,我想知道是否有一种首选方法。

一些方法是:

((! $# )) # check if $# is 'not true'
(($# == 0)) # $# is 0
[[ ! $@ ]] # $@ is unset or null
Run Code Online (Sandbox Code Playgroud)

parameters bash idioms command-line-arguments conditional-statements

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

当前 CPU 上哪个成本更高:算术运算还是条件?

20 到 30 年前,除法等算术运算是 CPU 成本最高的运算之一。在一段重复调用的代码中节省一个除法是显着的性能提升。但是今天的 CPU 具有快速的算术运算,并且由于它们大量使用指令流水线,条件可能会破坏高效执行。如果我想优化代码以提高速度,我应该更喜欢算术运算而不是条件运算吗?

示例 1

假设我们要实现模运算n。什么会表现得更好:

int c = a + b;
result = (c >= n) ? (c - n) : c;
Run Code Online (Sandbox Code Playgroud)

或者

result = (a + b) % n;
Run Code Online (Sandbox Code Playgroud)

?

示例 2

假设我们正在将 24 位有符号数转换为 32 位。什么会表现得更好:

int32_t x = ...;
result = (x & 0x800000) ? (x | 0xff000000) : x;
Run Code Online (Sandbox Code Playgroud)

或者

result = (x << 8) >> 8;
Run Code Online (Sandbox Code Playgroud)

?

cpu performance arithmetic-expressions conditional-statements

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

使用Java检查多个条件时的效率

我正在尝试刷新我的Java,因为它已经很长时间了,并开始在CodingBat.com上进行一些热身.(小心剧透可能会跟随);)

我刚刚做了一个非常简单的说法:

给定2个整数,a和b,如果它们是10或者它们的总和是10,则返回true.

make10(9,10)→true
使10 (9,9)→false使
10(1,9)→真

我的解决方案是:

public boolean makes10(int a, int b)
{
  if( a==10 || b==10)
    return true;
  else
  {
      if( (a+b)==10 )
          return true;
       else
          return false;
  }
}
Run Code Online (Sandbox Code Playgroud)

给出的解决方案是:

public boolean makes10(int a, int b) {
  return (a == 10 || b == 10 || a+b == 10);
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,a = 10或b = 10将给定解决方案的if语句终止并返回true,还是首先完成检查每个需要不需要的加法运算的条件?(即a + b)

在C++中有一个这种行为的名称,但对于我的生活,我不记得它是什么.

java performance conditional-statements

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

为什么在删除之前检查元素/属性?

Learning Javascript - A Hands-On Guide to the Fundamentals of Modern Javascript 中Working with the Attribute Node一章中,作者 Tim Wright 在第 73 页说:

删除一个属性就像获取一个属性一样简单。我们只是定位元素节点并使用该方法removeAttribute()将其从那里取出。如果您尝试删除不存在的属性,则不会抛出 Javascript 异常,但最好使用hasAttribute()我们之前提到的相同方法,如代码清单 4.6.4 所示

清单 4.6.4 用于删除我们图像的类值的 Javascript

if(document.getElementById("pic").hasAttribute("class")) {
    document.getElementById("pic").removeAttribute("class");
}
Run Code Online (Sandbox Code Playgroud)

如果没有任何异常抛出,是否不检查它是否存在或是否多余?会出现同样的结果。这本书说的论点是,在删除它之前检查参数可以节省浏览器通过不必要的代码解析,但if(document.getElementById("pic").hasAttribute("class")) {}甚至比单独解析还要长document.getElementById("pic").removeAttribute("class");

为什么这是最佳实践呢?

javascript methods conditional-statements

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

使用来自查询的变量进行 SQLPlus 条件执行

我有一个批处理文件,其中包含许多步骤,可以一一执行。

但是,为了能够使其更加灵活,我想在SQLPlus.

类似于,首先从查询中获取条件变量的值并存储在 say 中v_variable。然后将其用于一些检查,例如

IF v_variable = 'Y' THEN
--DO SOME DDL
ELSE
--DO OTHER DDL
END IF
Run Code Online (Sandbox Code Playgroud)

我必须在批处理文件的许多地方重复这个块,我无法通过 PL/SQL 以某种方式完成它。

我正在尝试使用此COLUMN命令,SQLPlus但以某种方式无法获取要保存的变量值。

COLUMN VARIABLE1 NEW_VALUE V_VARIABLE1

SELECT PARAM_VAL AS VARIABLE1 FROM TABLE_T WHERE PARAM_TYPE =  'XYZ'; 
-- This query will only throw one record.

DEFINE V_VARIABLE1
Run Code Online (Sandbox Code Playgroud)

那是绝对错误的吗?我们如何查看是否V_VARIABLE1从查询中获取值?

即使我做对了,我也对这IF-ELSE部分一无所知。有人可以帮忙吗?我对适用于 SQLPlus 的解决方案感兴趣。

sqlplus batch-file conditional-statements

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

将条件置于方法内部或外部

我必须在具有完全相同功能的两种设计之间进行选择。
从维护工作量的角度来看,哪一个更好?违反建议零售价?

设计#1

if(ConditionVerified())
{
    Process();
}

public void Process()
{     
    // Do a lot of work ...
}
Run Code Online (Sandbox Code Playgroud)

设计#2

Process();

public void Process()
{
   if(ConditionVerified())
   {
        DoProcess();
   }    

}

public void DoProcess()
{
    //Do a lot of work ...
}
Run Code Online (Sandbox Code Playgroud)

c# conditional-statements

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

如何评估 SymPy 在初始条件下给出的常数?

如何从 SymPy 给我的微分方程的解中计算常数 C1 和 C2?有初始条件 f(0)=0 和 f(pi/2)=3。

>>> from sympy import *
>>> f = Function('f')
>>> x = Symbol('x')
>>> dsolve(f(x).diff(x,2)+f(x),f(x))
f(x) == C1*sin(x) + C2*cos(x)
Run Code Online (Sandbox Code Playgroud)

我尝试了一些ics东西,但它不起作用。例子:

>>> dsolve(f(x).diff(x,2)+f(x),f(x), ics={f(0):0, f(pi/2):3})
f(x) == C1*sin(x) + C2*cos(x)
Run Code Online (Sandbox Code Playgroud)

顺便说一下:C2 = 0 和 C1 = 3。

python sympy conditional-statements differential-equations

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

可以使用内联语法有条件地将元素添加到数组中吗?

给定一个数组

let array: [Int]
Run Code Online (Sandbox Code Playgroud)

和一个变量

let addElement: Bool
Run Code Online (Sandbox Code Playgroud)

是否可以仅在addElement使用内联语法为 true 时有条件地添加元素?

以下工作:

let addElement = false
let array = [0, 1, addElement ? 2 : nil] //[0, 1, nil]
Run Code Online (Sandbox Code Playgroud)

但是根本不应该有元素,而不仅仅是一个nil值。可以像上面的例子那样内联编写吗?

arrays conditional-statements swift

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

如何从父路由器或父路由器检查活动子路由器?

如何可能检查子路由器是否活动,在 angular 4 中显示状态真或假,
现在我使用:/* @angular/cli: 1.4.4 node: 8.6.0 typescript: 2.3.4 @angular/路由器:4.4.4 */

我的父母路线是:

const routes:Routes=[
    {
        path: '', component: SummaryOfFindingsComponent,
        children:[
            {
                path:'data-time-frame', component: DataTimeFrameComponent
            },
            {
                path:'email-address', component: EmailAddressesComponent
            },
            {
                path:'repair-orders', component: RepairOrdersComponent
            },
            {
                path:'total-records', component:TotalRecordsComponent
            },
            {
                path:'unique-households', component: UniqueHouseholdsComponent
            },
            {
                path:'unique-vins', component: UniqueVinsComponent
            }
        ]
    }
]
Run Code Online (Sandbox Code Playgroud)

父组件是:

export class SummaryOfFindingsComponent implements OnInit {
    isUserSelected;
    constructor() { this.isUserSelected=false; }
    ngOnInit() { }
    isUserItemSelect(){
        this.isUserSelected=true;
    }
}
Run Code Online (Sandbox Code Playgroud)

router if-statement conditional-statements angular-routing angular

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

ifelse 中的条件:多列/变量中的值

这可能很简单:

我喜欢创建条件“变量B或变量A中的值”。

有效的是这样的:

var1 %in% c("value1", "value2") 条件:var1 是 value1 或 value2

var2 | var3 %in% 1 条件:var1 为 1 或 var2 为 1(var1 和 var2 是 0/1 的假人)

有了这些,我可以绕过重复的代码:

var1 == "value1" | var1 == "value2"
Run Code Online (Sandbox Code Playgroud)

var2 == 1 | var3 == 1
Run Code Online (Sandbox Code Playgroud)

我要更换的是

var4 == "value1" | var5 == "value1"
Run Code Online (Sandbox Code Playgroud)

可重现的例子:

(我省略了 var1-var3)

var4 <- c("value1", "valuex")
var5 <- c("valuey", "value1")

df <- data.frame(var4, var5)
Run Code Online (Sandbox Code Playgroud)

我使用 dplyr 包中的 case_when() 但它也应该与基础 R ifelse 一起使用。

df <- …
Run Code Online (Sandbox Code Playgroud)

if-statement r operators conditional-statements dplyr

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