挑战TJS Section1.8:条件分支

正篇

Yuu:在SysteminputString方法显示的对话框中,有两个按钮对吧。

Yuni:emmm有点突然。。。嗯是的,有两个按钮,分别是“OK”和“Cancel”。

Yuu:这次我们要写一个脚本,它会对按下“OK”和“Cancel”作出不同的反馈。

Yuni:你的意思是要做条件分支?

Yuu:嗯,你已经明白了。

Yuni:在KAG中,ifendif标签是用来做条件判断的。

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 == 1a == 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:嗯呐。那下回见啦~

发表评论