有人可以代替吗?请在下面的代码中使用THEN吗?
return e = this.checked ? i - n > 0 ? 0 : i - n < 10 ? 10 : i - n : i - n < 0 ? 10 : i - n > 10 ? 0 : 10 + i - n
我特别困惑?其次是另一个?在语句return e = this.checked ? i - n > 0 ? 0 .....
的开头。是什么意思?
谢谢
答案 0 :(得分:0)
插入括号和缩进,您的代码等效于:
return e = this.checked
? (
i - n > 0
? 0
: (
i - n < 10
? 10
: i - n
)
)
: (
i - n < 0
? 10
: (
i - n > 10
? 0
: 10 + i - n
)
);
简而言之,在第一个表达式或第二个表达式内部,您可以嵌套其他三元运算符,因为它们也可以解析表达式-尽管这并不意味着它是一个好主意,但它非常不可读。
>使用if-else和this tool:
if (this.checked) {
if (i - n > 0) {
return 0
} else {
if (i - n < 10) {
return 10
} else {
return i - n
}
}
} else {
if (i - n < 0) {
return 10
} else {
if (i - n > 10) {
return 0
} else {
return 10 + i - n
}
}
}
答案 1 :(得分:0)
要使其更具可读性,您可以随时在代码中添加括号
return e = this.checked ? ( (i - n > 0 )? 0 : (i - n < 10 ? 10 : i - n ) )
:
( (i - n < 0) ? 10 : (i - n > 10 ? 0 : 10 + i - n) )
或按照@Nick Parsons的回答分成不同的部分。
答案 2 :(得分:0)
如果将三元分解成单独的部分,这可能会很有用。本质上,它具有以下基本结构:
condition ? a : b
在这里,如果a
的值为condition
,将执行true
,而如果b
的值为false
,则会触发return e = this.checked ? (i - n > 0 ? 0 : (i - n < 10 ? 10 : i - n)) : (i - n < 0 ? 10 : (i - n > 10 ? 0 : 10 + i - n))
。
因此,将括号放在单独的三元运算符周围可以帮助您清除问题。
condition
所以在这里:
this.checked
是 a
(i - n > 0 ? 0 : (i - n < 10 ? 10 : i - n))
是 b
(i - n < 0 ? 10 : (i - n > 10 ? 0 : 10 + i - n))
是 if (this.checked) {
if (i - n > 0) {
return 0
} else {
if (i - n < 10) {
return 10;
} else {
return i - n;
}
}
} else {
if (i - n < 0) {
return 10;
} else {
if (i - n > 10) {
return 0;
} else {
return 10 + i - n;
}
}
}
或者,如果将其转换为if语句,则可能会更容易理解:
pipeline {
agent none
stages {
stage('Test') {
parallel {
stage('Test On dev6') {
agent {
label "dev6"
}
steps {
xyz()
}
}
stage('Test On dev7') {
agent {
label "dev7"
}
steps {
xyz()
}
}
}
}
}