如果没有给出位置参数,在 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
20 到 30 年前,除法等算术运算是 CPU 成本最高的运算之一。在一段重复调用的代码中节省一个除法是显着的性能提升。但是今天的 CPU 具有快速的算术运算,并且由于它们大量使用指令流水线,条件可能会破坏高效执行。如果我想优化代码以提高速度,我应该更喜欢算术运算而不是条件运算吗?
假设我们要实现模运算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)
?
假设我们正在将 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
我正在尝试刷新我的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++中有一个这种行为的名称,但对于我的生活,我不记得它是什么.
在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");!
为什么这是最佳实践呢?
我有一个批处理文件,其中包含许多步骤,可以一一执行。
但是,为了能够使其更加灵活,我想在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 的解决方案感兴趣。
我必须在具有完全相同功能的两种设计之间进行选择。
从维护工作量的角度来看,哪一个更好?违反建议零售价?
设计#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) 如何从 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。
给定一个数组
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值。可以像上面的例子那样内联编写吗?
如何可能检查子路由器是否活动,在 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
这可能很简单:
我喜欢创建条件“变量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 ×2
performance ×2
angular ×1
arrays ×1
bash ×1
batch-file ×1
c# ×1
cpu ×1
dplyr ×1
idioms ×1
java ×1
javascript ×1
methods ×1
operators ×1
parameters ×1
python ×1
r ×1
router ×1
sqlplus ×1
swift ×1
sympy ×1