我有2个变量A
和B
。其中一个将是 未声明 ,而另一个将具有值。而不是使用if语句,是否有一种更优雅的方式来将它们两者等同起来只形成一个变量?像这样:
if(A) {
X = A
} else if(B) {
X = B
}
两个if语句可能是一个相对较小的代码,但考虑到我将来最终可能会有超过2个这样的变量 - 当然还有更好的方法可以做到这一点吗?
非常感谢您提供的任何帮助!
编辑:对不起我的意思是他们中的一个将是未申报的。如果我执行X = A || B
之类的操作,我会收到未被引用的引用错误
答案 0 :(得分:3)
您可以使用||
运算符:
X = A || B
简而言之,expr1 || expr2 || expr3 | ...
返回可以转换为true的第一个表达式
答案 1 :(得分:3)
如果您确实想要找到不是// Defines a property named textualDescription of type String
var textualDescription: String {
// Calls textualDescription on every element of the array
// and adds the return values to a new array itemsAsText
let itemsAsText = self.map { $0.textualDescription }
// Creates a string starting with "[" followed by
// all the elements in itemsAsText, separated by ",",
// and a "]". Then, returns that String
return "[" + itemsAsText.joined(separator: ", ") + "]"
}
的第一个值,那么您需要检查值是否未定义。值undefined
不是0
,但如果undefined
为if (A)
时使用A
,则会跳过0
语句的正文。
这是一种选择第一个非未定义值的简洁方法:
if
或者,如果您正在编写可以使用箭头功能的环境:
var myValue = [A, B, C, D].find(function (val) {
return typeof val !== 'undefined';
});
答案 2 :(得分:1)
您可以使用三元运算符:
X = A ? A : B;
或多个变量:
X = [A, B, C, D].find(x => x);
答案 3 :(得分:0)
试试这个。
var X = (A) ? A : B;
答案 4 :(得分:0)
你可以这样做:
X = A && A || B && B;
或
X = A ? A : B;
答案 5 :(得分:0)
使用三元运算符......
var A = null;
var B = 'This Has a Value';
var OneVar = (A === null ? B : A);
console.log('OneVar: ' + OneVar);
控制台结果:OneVar:具有值