我想在三元运算符中使用 if else 语句
if (open) {
setOpen(false)
} else {
setOpen(true)
navigator.clipboard.writeText(link)
}
Run Code Online (Sandbox Code Playgroud)
“if”没有问题,我不知道如何将 else 转换为三元。就像下面的代码一样:
open ? setOpen(false) : setOpen(true) ; navigator.clipboard.writeText(link)
Run Code Online (Sandbox Code Playgroud)
像这样的事情还是有其他方法来完成这项工作?
我正在为一个项目构建一个XML Deserializer,我经常遇到这种类型的代码情况:
var myVariable = ParseNDecimal(xml.Element("myElement")) == null ?
0 : ParseNDecimal(xml.Element("myElement")).Value;
Run Code Online (Sandbox Code Playgroud)
有没有更好的方式来写这个陈述?
编辑:也许我应该澄清我的例子,因为我有一个帮助方法来解析字符串为小数.
我在Perl中做了一些工作,我使用条件运算符跑了一个奇怪的结果.
有问题的代码:
($foo eq "blah") ? @x = @somearray : @y = ("another","array");
Run Code Online (Sandbox Code Playgroud)
尝试编译此代码会导致错误" Assignment to both a list and a scalar at XXX line YY, near ');'".在尝试查明错误的来源时,我使用了几种不同的方式在Perl中表示数组,并且它们都返回相同的错误.现在起初我认为这对于赋值语句只是一些愚蠢的明显错误,但为了满足我的好奇心,我用更冗长的方式重写了语句:
if($foo eq "blah") {
@x = @somearray;
} else {
@y = ("another","array");
}
Run Code Online (Sandbox Code Playgroud)
该版本的代码编译得非常好.
在条件运算符的工作方式和基本的if-else语句之间是否存在一些很好的区别,我在这里缺少这些语句?我总是将条件运算符理解为第二个语句的简写版本.如果两者之间没有功能差异,为什么Perl会反对第一个语句,而不是第二个语句?
我在我的代码中调用三个函数,我想验证我的一些字段.当我尝试使用下面给出的代码时.它只检查第一个值,直到它得到错误的结果.
我想要一些类似的东西,如果fisrt函数返回true,那么它也应该调用next函数,依此类推.可以使用什么代替Or运算符来执行此操作.
if (IsFieldEmpty(ref txtFactoryName, true, "Required") ||
IsFieldEmpty(ref txtShortName, true, "Required") ||
IsFieldEmpty(ref cboGodown, true, "Required"))
{ }
Run Code Online (Sandbox Code Playgroud)
编辑
public bool IsFieldEmpty(ref TextBox txtControl, Boolean SetErrorProvider,string msgToShowOnError)
{
ErrorProvider EP = new ErrorProvider();
if (txtControl.Text == string.Empty)
{
EP.SetError(txtControl, msgToShowOnError);
return true;
}
else
{
EP.Clear();
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
请评论,这个方法是否可以使用ref变量作为参数之一.
我正在检查onSubmit事件的验证winform.
我知道我可以这样做:
Int32 tempInt;
Int32? exitNum;
if (Int32.TryParse(fields[13], out tempInt))
exitNum = tempInt;
else
exitNum = null;
Run Code Online (Sandbox Code Playgroud)
但为什么我不能这样做呢?
Int32 tempInt;
Int32? exitNum = Int32.TryParse(fields[13], out tempInt) ? tempInt : null;
Run Code Online (Sandbox Code Playgroud)
有没有办法使用条件运算符为可空值赋值?
我需要<p:panelGrid>根据支持bean属性动态选择a的宽度.但它对我不起作用.我觉得我的代码中有一些语法错误.
<p:panelGrid style="width:#{myBean.fromCCRM} ?70%:90%">
...
</p:panelGrid>
Run Code Online (Sandbox Code Playgroud) 我尝试使用MSVC 10的以下代码片段,它可以正常工作.
enum
{
FOO = (sizeof(void*) == 8 ? 10 : 20)
};
int main()
{
return FOO;
}
Run Code Online (Sandbox Code Playgroud)
我想知道的是:当所有操作数都是常量表达式时,C++标准(最好是C++ 98)是否允许我在常量表达式中使用条件运算符,或者这是Microsoft的怪癖/扩展?
我有两个重载功能
void foo(std::string value);
void foo(bool value);
Run Code Online (Sandbox Code Playgroud)
我打电话的时候
foo(true ? "a" : "b");
Run Code Online (Sandbox Code Playgroud)
为什么函数需要一个布尔值而不是字符串?
我想在相同的if条件下测试这两个变量.
目前我使用[[$ var]]来测试一个,但两个变量的相同功能不起作用.
为了做到这一点,我试过:
if [[ &var1 && &var2 ]]; then
or
if [[ &ipAddress ]] && [[ &bcastAddress ]]; then
Run Code Online (Sandbox Code Playgroud)
有限制吗?
如果满足另一个变量的条件,我想删除变量中的值.例如:
df$var1[df$condvar == 0] <- NA
Run Code Online (Sandbox Code Playgroud)
上面的代码工作正常,但我需要重复这个几十更多的变数,所以var1上面会改变var2,var3等等.这始终是基于相同的condvar,虽然对于这些变量的一半条件df$condvar == 1.一遍又一遍地重复这一行是很麻烦的,我想知道是否有更简洁的方法来编写代码.其中一个apply功能会帮助,还是需要创建自定义功能?
作为一个可重复的例子,我希望避免下面代码的重复性:
ex <- mtcars
ex$mpg[ex$vs == 0] <- NA
ex$disp[ex$vs == 0] <- NA
ex$drat[ex$vs == 0] <- NA
ex$cyl[ex$vs == 1] <- NA
ex$hp[ex$vs == 1] <- NA
ex$wt[ex$vs == 1] <- NA
ex
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 NA 6 NA 110 NA 2.620 16.46 0 1 4 4 …Run Code Online (Sandbox Code Playgroud)