挑战TJS Section1.8:条件分支
正篇
Yuu:在System
类inputString
方法显示的对话框中,有两个按钮对吧。
Yuni:emmm有点突然。。。嗯是的,有两个按钮,分别是“OK”和“Cancel”。
Yuu:这次我们要写一个脚本,它会对按下“OK”和“Cancel”作出不同的反馈。
Yuni:你的意思是要做条件分支?
Yuu:嗯,你已经明白了。
Yuni:在KAG中,if
和endif
标签是用来做条件判断的。
Yuu:在TJS中,if
也是用来进行条件判断的。
Yuni:哦是吗?
Yuu:嗯呐。不过它没有endif啦。在TJS中,你需要像这样来写一个分支语句。
//使用if语句编写条件分支(TJS脚本)
if (condition)
{
当condition判断为真(true)时要执行的语句(也即condition被满足时)
}
Yuu:使用KAG标签它应该是这样。
//使用if语句编写条件分支(TJS脚本)
[ if exp = "condition"]
当condition判断为真(true)时要执行的语句(也即condition被满足时)
[ endif ]
Yuni:这里if的用法和KAG标签中if的用法是相似的。
Yuu:对的,在“条件”的位置写一个条件表达式。编写条件表达式的方式大体上与KAG相同,比如这样。
//使用if的例子
var a = 1;
if (a == 1)
{
System.inform("变量a的值是1.");
}
Yuu:if (a == 1)
的意思是,如果变量a的值是1,大括号{ }之间的语句将会被执行。
Yuni:所以当执行脚本的时候,我们会看到消息“变量a的值是1.”。
Yuu:嗯是的。另外,当条件不满足时执行的语句内容写在else中。
Yuni:这和KAG的else标签是一样的。
Yuu:嗯对,下面是else的使用方法。
//使用else的条件分支例子(TJS)
if (condition)
{
当condition判断为真(true)时要执行的语句(也即condition被满足时)
}
else
{
当condition判断为假(false)时要执行的语句(也即condition不被满足时)
}
Yuu:所以如果用KAG来写的话。
//使用else的条件分支例子(KAG)
[ if exp ="condition"]
当condition判断为真(true)时要执行的语句(也即condition被满足时)
[ else ] Process to be executed when
当condition判断为假(false)时要执行的语句(也即condition不被满足时)
[ endif ]
Yuni:很相似的
Yuu:没错。然后,如果你想要指定多于1个的条件,你可以在else的后面再跟上if,像这样。
//具有多重分支结构的例子(TJS)
if (condition 1)
{
条件1为真时执行的语句
}
else if (condition 2)
{
条件1为假并且条件2为真时执行的语句
}
else
{
条件1和2都为假时执行的语句
}
Yuni:如果是KAG的话,我们可以用elseif标签编写,像这样。
//具有多重分支结构的例子(KAG)
[ if exp = "condition 1"]
条件1为真时执行的语句
[ elsif exp = "condition 2"]
条件1为假并且条件2为真时执行的语句
[ else ]
条件1和2都为假时执行的语句
[ endif ]
Yuu:嗯,下面来一个真实的例子。
Yuni:好。
//使用if和else的条件分支例子
var a = 1;
if (a == 1)
{
System.inform("a的值是1.");
}
else if (a == 2)
{
System.inform("a的值是2.");
}
else
{
System.inform("a的值既不是1也不是2.");
}
Yuu:当执行脚本的时候。。。
Yuni:因为变量a赋值为1,a == 1
成立,所以a的值是1.
会被输出。
Yuu:嗯,如果a初始化为2呢?
Yuni:这次a == 1
不成立了,但是下一个分支a == 2
成立。因此a的值是2.
会被输出。
Yuu:OK,如果a初始化为3呢。
Yuni:因为a == 1
和a == 2
都不成立了,所以else的部分将会被执行,输出a的值既不是1也不是2.
Yuu:没问题。
Yuni:TJS条件分支和KAG的写法大体相似。
Yuu:另外呢,在TJS中,如果if和else中只有一条语句,你可以不写大括号{ }。像这样。
//不写大括号的情况
var a = 1;
if (a == 1)
System.inform("a的值是1.");
else if (a == 2)
System.inform("a的值是2." );
else
System.inform("a的值既不是1也不是2.");
Yuni:可以写的更短呢。
Yuu:没错。不过呢,如果你省略得过多,会导致代码难以看懂,因此要小心。
Yuni:OK,我明白了。
Yuu:好啦,这次的内容就是这些。下次我会讲解是用在条件分支中的运算符。
Yuni:是这次用到的==
吗?
Yuu:嗯对,并且我也会完成点击OK和Cancel触发不同动作的脚本。
Yuni:哦对,这就是本次的目标啊。
Yuu:嗯呐。那下回见啦~