这是我正在创作的googlescript的一部分。如果我必须检查具有2个给定值(1或0)中的任何一个的变量,那么请查看if条件是否正确?
if (emailSent != EMAIL_SENT && emailAddress != '' && daysleft == 1 && daysleft == 0) { //
阻止再次向同一个人发送同一邮件,同时跳过空白单元格
//如果daysleft = 1或0则发送邮件。
答案 0 :(得分:1)
您可以对||
的逻辑OR daysleft
条件进行分组,因为逻辑AND &&
的运算符优先级更高。 daysleft
可以有零或一个值。
对于emailAddress
,您可以使用该值,如果它是一个空字符串,则它是一个虚假值,否则是一个真值,它会重新调整为true
。
if (emailSent != EMAIL_SENT && emailAddress && (daysleft == 1 || daysleft == 0)) {
答案 1 :(得分:0)
你有2个条件,daysleft == 1&& daysleft == 0也是矛盾的:
所以输出总是假的
答案 2 :(得分:0)
在您撰写的条件中使用collection.forEach((item) => {
promiseReturningFunction(item);
});
需要 string uri5 = "https://api.microsofttranslator.com/v2/Http.svc/BreakSentences?text=" + English.Text + "&language=en";
HttpWebRequest httpWebRequest1 = (HttpWebRequest)WebRequest.Create(uri5);
httpWebRequest1.Headers.Add("Authorization", authToken);
using (WebResponse response1 = httpWebRequest1.GetResponse())
using (Stream stream1 = response1.GetResponseStream())
{
System.Runtime.Serialization.DataContractSerializer dcs = new System.Runtime.Serialization.DataContractSerializer(typeof(List<int>));
List<int> result = (List<int>)dcs.ReadObject(stream1);
Console.WriteLine(text);
Console.WriteLine("BreakSentences broke up the above sentence into " + result.Count + " sentences.");
int curPos = 0;
for (int i = 0; i < result.Count; i++)
{
arr[i] = text.Substring(curPos, result[i] - 1);
string uri = "https://api.microsofttranslator.com/v2/Http.svc/Translate?text=" + HttpUtility.UrlEncode(arr[i]) + "&from=" + "en" + "&to=" + "ja" + "&category=" + category;
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(uri);
httpWebRequest.Headers.Add("Authorization", authToken);
using (WebResponse response = httpWebRequest.GetResponse())
using (Stream stream = response.GetResponseStream())
{
DataContractSerializer dcs1 = new DataContractSerializer(Type.GetType("System.String"));
string translation = (string)dcs1.ReadObject(stream);
Console.WriteLine(translation);
output = translation;
}
arr2[i] = output;
curPos += result[i];
}
}
与&&
和daysleft
相等,这是不可能的。
1
要解决此问题,您必须在它们之间添加0
。
至于语法,我会像这样写这个特例:
if ( ... && daysleft == 1 && daysleft == 0) {
对于OR
的其他情况,我会将变量中的条件分开,并将其与if (emailSent != EMAIL_SENT && emailAddress && daysleft < 2)
内部一起使用,如下所示:
ORing
如果你想内联案例,你必须这样写:
and
括号将对它们进行分组,因此const lessThanTwoDaysLeft = daysleft === 1 || daysleft === 0;
if (emailSent != EMAIL_SENT && emailAddress && lessThanTwoDaysLeft)
的结果将用于整体条件。
最后,我建议你使用三等于,而不是两等。