??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲欧洲国产经精品香蕉网,亚洲中文字幕无码爆乳,亚洲最大AV网站在线观看http://www.tkk7.com/asdtiang/category/43599.html交流学习JAVA zh-cnFri, 15 Jan 2010 23:14:41 GMTFri, 15 Jan 2010 23:14:41 GMT60JAVA FX语法学习----数据l定和触发器http://www.tkk7.com/asdtiang/articles/309688.htmlasdtiangasdtiangFri, 15 Jan 2010 06:35:00 GMThttp://www.tkk7.com/asdtiang/articles/309688.htmlhttp://www.tkk7.com/asdtiang/comments/309688.htmlhttp://www.tkk7.com/asdtiang/articles/309688.html#Feedback0http://www.tkk7.com/asdtiang/comments/commentRss/309688.htmlhttp://www.tkk7.com/asdtiang/services/trackbacks/309688.htmll定概述

bind 关键字将目标变量的gl定表达式的值相兌。绑定表辑ּ可以是某个基本类型的单倹{对象、函数的l果或表辑ּ的结果。以下几节分别提供每U绑定表辑ּ 的示例?/p>

l定和对?/strong>

在大多数实际的编E情况下Q需要通过数据l定使应用程序的囑Ş用户界面 (Graphical User Interface, GUI) 与其底层数据同步。(GUI ~程?a >使用 JavaFX 构徏 GUI 应用E序的主题;下面我们用一些非可视的示例来说明基本的底层结构。)

让我们先看一个简单的CZQ下面的脚本变?x l定到变?yQ? 更改 x 的|然后输出 y 的倹{由于这两个变量l定在一P因此 y g自动更新为新倹{?/p>
var x = 0;

def y = bind x;

x = 1;

println(y); // y now equals 1

x = 47;

println(y); // y now equals 47
 

h意,我们已将变量 y 声明?def。这可防止Q何代码直? 变量赋|管允许该变量的值因l定 (bind) 而更改)。在l定到对象时Q此U定仍适用Q请回顾? 用对?/a>中介l的 AddressQ:

var myStreet = "1 Main Street";

var myCity = "Santa Clara";

var myState = "CA";

var myZip = "95050";



def address = bind Address {

street: myStreet;

city: myCity;

state: myState;

zip: myZip;

};



println("address.street == {address.street}");

myStreet = "100 Maple Street";

println("address.street == {address.street}");
 

如果更改 myStreet 的|address 对象内部?street 变量受到媄响:

address.street == 1 Main Street

address.street == 100 Maple Street
 

h意,更改 myStreet 的值实际上会导致创Z个新?Address 对象Q然后将该对象重新赋l?address 变量。ؓ了跟t所做的更改?em>?/em>创徏新的 Address 对象Q请改ؓ直接l定 (bind) 到该对象的实例变量:

def address = bind Address {

street: bind myStreet;

city: bind myCity;

state: bind myState;

zip: bind myZip;

};
 

如果要显式绑定到实例变量Q还可以省略W一?bindQ?code>Address 前面的那个)Q?/p>

def address = Address {

street: bind myStreet;

city: bind myCity;

state: bind myState;

zip: bind myZip;

};
 

前面的课E已讲授了函敎ͼ但是您还必须了解l定函数?em>非绑定函?/em>之间的区别?/p>

误虑下面的函敎ͼ该函数创建和q回一?Point 对象Q?/p>
var scale = 1.0;



bound function makePoint(xPos : Number, yPos : Number) : Point {

Point {

x: xPos * scale

y: yPos * scale

}

}



class Point {

var x : Number;

var y : Number;

}
 

q就是所谓的l定函数Q因为它前面?bound 关键字?/p>


注意Q?code>bound 关键字不能替?bind 关键字;q两个关键字按如下所C方式结合用?

接下来,让我们添加一些代码来调用此函数ƈ试l定Q?/p>
var scale = 1.0;



bound function makePoint(xPos : Number, yPos : Number) : Point {

Point {

x: xPos * scale

y: yPos * scale

}

}



class Point {

var x : Number;

var y : Number;

}



var myX = 3.0;

var myY = 3.0;

def pt = bind makePoint(myX, myY);

println(pt.x);



myX = 10.0;

println(pt.x);



scale = 2.0;

println(pt.x);
 

此脚本的输出如下所C:

3.0

10.0

20.0
 

让我们分析一下此脚本Q一ơ分析一部分Q?/p>

代码Q?/p>
var myX = 3.0;

var myY = 3.0;

def pt = bind makePoint(myX, myY);

println(pt.x);
 

脚本变?myX ?myY 初始化ؓ 3.0? q些值随后作为参C递给 makePoint 函数Q该函数会创建ƈq回一个新?Point 对象?code>bind 关键字(位于 makePoint 调用前面Q将新创建的 Point 对象 (pt) l定?makePoint 函数的结果?/p>

接下来,代码Q?/p>
myX = 10.0;

println(pt.x);
 

?myX 的值更改ؓ 10.0 q输?pt.x 的倹{输? pt.x 现在也ؓ 10.0?/p>

最后,代码Q?/p>
scale = 2.0;

println(pt.x);
 

更改 scale 的值ƈ再次输出 pt.x 的倹{?code>pt.x 的值现在ؓ 20.0。但是,如果我们从该函数中删?bound 关键字(从而其成为非l定函数Q,则输出应为:

3.0

10.0

10.0
 

q是因ؓQ非l定函数只是在其某个参数发生变化时才被重新调用。由?scale 不是函数的参敎ͼ因此更改它的值将不会D另一个函数调用?/p>

您还可以?bind ?for 表达式结合用。ؓ了对此进行研IӞ让我们首先定义两个序列ƈ输出q两个序列中各个的|

var seq1 = [1..10];

def seq2 = bind for (item in seq1) item*2;

printSeqs();



function printSeqs() {

println("First Sequence:");

for (i in seq1){println(i);}

println("Second Sequence:");

for (i in seq2){println(i);}

}
 

seq1 包含十个(数字 1 ?10Q?code>seq2 也包含十个项Q这些项本来会与 seq1 h相同的|但是我们已经对其中的每个w应用了表辑ּ item*2Q? 因此它们的值将加倍?/p>

因此Q输ZؓQ?/p>
First Sequence:

1

2

3

4

5

6

7

8

9

10

Second Sequence:

2

4

6

8

10

12

14

16

18

20
 

我们可以通过?bind 关键字放?for 关键字前面来l定q两个序列?/p>
def seq2 = bind for (item in seq1) item*2;
 

问题现在变成Q?#8220;如果 seq1 发生了某些变化,那么?seq2 中的所?/em>w受到影响q是部分受到媄响?”我们可以通过以下Ҏ来对此进行测试:一个项Q?11Q插? seq1 的末֤Q然后输两个序列的|看有什么变化:

var seq1 = [1..10];

def seq2 = bind for (item in seq1) item*2;

insert 11 into seq1;

printSeqs();



function printSeqs() {

println("First Sequence:");

for (i in seq1){println(i);}

println("Second Sequence:");

for (i in seq2){println(i);}

}
 

输出Q?/p>
First Sequence:

1

2

3

4

5

6

7

8

9

10

11

Second Sequence:

2

4

6

8

10

12

14

16

18

20

22
 

输出表明Q将 11 插入 seq1 的末֤不会影响 seq2 中的?10 个项Q新会自动d? seq2 的末֤Q其gؓ 22?/p>

替换触发?/em>是附加到变量的Q意代码块Q一旦变量的值发生变化,它们׃执行。以下示例显CZ基本语法Q? 它定义一? password 变量q向光加一个替换触发器Q当密码发生变化Ӟ该触发器会输Z则消息来报告此变量的新|

var password = "foo" on replace oldValue {

println(""nALERT! Password has changed!");

println("Old Value: {oldValue}");

println("New Value: {password}");

};



password = "bar";
 

此示例的输出如下所C:

ALERT! Password has changed!

Old Value:

New Value: foo



ALERT! Password has changed!

Old Value: foo

New Value: bar
 

此示例中的触发器引发两次Q当 password 初始化ؓ "foo" 时引发一ơ,当其值变?"bar" 时又引发一ơ。请注意Q?code>oldValue 变量存储在调用触发器之前变量的倹{您可以?oldValue 变量命名ZQ何所需的名Uͼ我们是由于该名称h描述性才恰好使用它?/p>

asdtiang 2010-01-15 14:35 发表评论
]]>
JAVA FX语法学习----表达?/title><link>http://www.tkk7.com/asdtiang/articles/309687.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Fri, 15 Jan 2010 06:23:00 GMT</pubDate><guid>http://www.tkk7.com/asdtiang/articles/309687.html</guid><wfw:comment>http://www.tkk7.com/asdtiang/comments/309687.html</wfw:comment><comments>http://www.tkk7.com/asdtiang/articles/309687.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/asdtiang/comments/commentRss/309687.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/asdtiang/services/trackbacks/309687.html</trackback:ping><description><![CDATA[<em>表达?/em>是可以生成某个结果值的代码D,可以l合使用表达式来生成“更大?#8221;表达式。JavaFX Script ~程语言是表辑ּ语言Q这意味着一切(包括循环、条件甚臛_Q都是表辑ּ。在某些情况下(?<code>while</code> 表达式)Q表辑ּh <code>Void</code> cdQ这意味着它们不返回结果?br /> <div><a name="block"><strong>块表辑ּ</strong></a></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody> <tr> <td><img src="http://developers.sun.com.cn/javafx/1/tutorials/core/expressions/exp_files/a.gif" alt=" " border="0" height="4" width="1" /></td> </tr> </tbody> </table> </div> <p><em>块表辑ּ</em>׃pd声明或表辑ּl成Q它们括在花括号中ƈ用分可行分隔。块表达式的值是最后一个表辑ּ 的倹{如果块表达式中不包含表辑ּQ则其类型ؓ <code>Void</code>。请注意Q?code>var</code> ?<code>def</code> 是表辑ּ?/p> <p>下面的块表达式对几个数字q行相加q将l果存储在一个名?<code>total</code> 的变量中Q?/p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>var nums = [5, 7, 3, 9];<br /> var total = {<br /> var sum = 0;<br /> for (a in nums) { sum += a };<br /> sum;<br /> }<br /> println("Total is {total}.");</pre> </td> </tr> </tbody> </table>  <br /> <p>q行此脚本将生成以下输出Q?/p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>Total is 24.</pre> </td> </tr> </tbody> </table>  <br /> <p>W一?(<code>var nums = [5, 7, 3, 9];</code>) 声明一个整数序列?/p> <p>W二行声明一个名?<code>total</code> 的变量,该变量将用来存放q些整数的和?/p> <p>随后的块表达式由左花括号和右花括号之间的所有内Ҏ成:</p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>{<br /> var sum = 0;<br /> for (a in nums) { sum += a };<br /> sum;<br /> }</pre> </td> </tr> </tbody> </table>  <br /> <p>在该块内部,W一行代码声明一个名?<code>sum</code> 的变量,该变量将用来存放此序列中各个数字之和。第二行Q一?<a ><code>for</code> 表达?/a>Q遍历该序列Q将每个数字?<code>sum</code> 相加。最后一行设|该块表辑ּ的返回|在本例中?24Q?/p> <div><a name="if"><strong>if 表达?/strong></a></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody> <tr> <td><img src="http://developers.sun.com.cn/javafx/1/tutorials/core/expressions/exp_files/a.gif" alt=" " border="0" height="4" width="1" /></td> </tr> </tbody> </table> </div> <p>使用 <code>if</code> 表达式后Q?em><span style="color: red;">仅当</span></em>特定条g为真时才执行某些代码块,从而对E序? q行定向?/p> <p>例如Q以下脚本基于年龄来讄h?2 岁到 65 岁的人支付正怭h 10 元。老h和儿童支?5 元Q? 岁以下的儿童免费?/p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>def age = 8;<br /> var ticketPrice;<br /> <br /> if (age < 5 ) {<br /> ticketPrice = 0;<br /> } else if (age < 12 or age > 65) {<br /> ticketPrice = 5;<br /> } else {<br /> ticketPrice = 10;<br /> }<br /> println("Age: {age} Ticket Price: {ticketPrice} dollars.");</pre> </td> </tr> </tbody> </table>  <br /> <p>如果?<code>age</code> 讄?8Q该脚本生成以下输出:</p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>Age: 8 Ticket Price: 5 dollars.</pre> </td> </tr> </tbody> </table>  <br /> <p>该示例的E序如下所C:</p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre><strong>if (age < 5 ) {<br /> ticketPrice = 0;<br /> }</strong> else if (age < 12 or age > 65) {<br /> ticketPrice = 5;<br /> } else {<br /> ticketPrice = 10;<br /> }</pre> </td> </tr> </tbody> </table>  <br /> <p>如果 <code>age</code> 于 5Q则h设|ؓ 0?/p> <p>E序随后蟩q其余条件测试ƈ输出l果?/p> <p>如果 <code>age</code> 不小?5Q程序将l箋执行下一个条件测试(由后跟另一?<code>if</code> 表达式的 <code>else</code> 关键字来指示Q:</p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>if (age < 5 ) {<br /> ticketPrice = 0;<br /> }<strong> else if (age < 12 or age > 65) {<br /> ticketPrice = 5;<br /> }</strong> else {<br /> ticketPrice = 10;<br /> }</pre> </td> </tr> </tbody> </table>  <br /> <p>如果人的q龄?5 ?12 岁之间或者大?65 岁,该程序会票仯|ؓ 5 元?/p> <p>如果人的q龄?12 ?65 岁之_E序会流x后一个代码块Q用 <code>else</code> 关键字进行标讎ͼQ?/p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>if (age < 5 ) {<br /> ticketPrice = 0;<br /> } else if (age < 12 or age > 65) {<br /> ticketPrice = 5;<br /> } <strong>else {<br /> ticketPrice = 10;<br /> }</strong></pre> </td> </tr> </tbody> </table>  <br /> <p>只有当前面的所有条件均不满xQ才会执行此块。它会针?12 ?65 岁之间的人将h讄?10 元?/p> <blockquote> <hr /> 注:可以上面的代码~减成一个非常简z的条g表达式:<br /> <br /> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>ticketPrice = if (age < 5) 0 else if (age < 12 or age > 65) 5 else 10;</pre> </td> </tr> </tbody> </table>  <br /> q是一个需要掌握的有用ҎQ在本教E的? 面部分中q会使用它? <hr /> </blockquote> <div><a name="range"><strong>范围表达?/strong></a></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody> <tr> <td><img src="http://developers.sun.com.cn/javafx/1/tutorials/core/expressions/exp_files/a.gif" alt=" " border="0" height="4" width="1" /></td> </tr> </tbody> </table> </div> <p>“序列”一课讲授了一U用来声明Ş成等差数列的数字序列的简化表C法?/p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>var num = [0..5];</pre> </td> </tr> </tbody> </table>  <br /> <p>从技术上Ԍ<code>[0..5]</code> 是一?em>范围表达?/em>。默认情况下Q相dg间的? 隔ؓ 1Q但是您可以使用 <code>step</code> 关键字来指定一个不同的间隔。例如,定义一个由 1 ?10 之间的奇数构成的序列Q?/p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>var nums = [1..10 step 2];<br /> println(nums);</pre> </td> </tr> </tbody> </table>  <br /> <p>此脚本的输出如下所C:</p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>[ 1, 3, 5, 7, 9 ]</pre> </td> </tr> </tbody> </table>  <br /> <p>要创?em>降序范围</em>Q请保W二个值小于第一个|q指定一个负?step |</p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>var nums = [10..1 step -1];<br /> println(nums);</pre> </td> </tr> </tbody> </table>  <br /> <p>输出为:</p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>[ 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 ]</pre> </td> </tr> </tbody> </table>  <br /> <p>如果您在创徏降序范围时没有提?em>负的</em> step |则会生成一个空序列?/p> <p>以下代码Q?/p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>var nums = [10..1 step 1];<br /> println(nums);</pre> </td> </tr> </tbody> </table>  <br /> <p>生成下面的~译时警告:</p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>range.fx:1: warning: empty sequence range literal, probably not what you meant.<br /> var nums = [10..1 step 1];<br /> ^<br /> 1 warning</pre> </td> </tr> </tbody> </table>  <br /> <p>如果您完全忽?step |也会生成一个空序列?/p> <div><a name="for"><strong>for 表达?/strong></a></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody> <tr> <td><img src="http://developers.sun.com.cn/javafx/1/tutorials/core/expressions/exp_files/a.gif" alt=" " border="0" height="4" width="1" /></td> </tr> </tbody> </table> </div> <p>另一个与序列有关的表辑ּ?<em>for</em> 表达式?code>for</code> 表达式ؓ遍历序列中的各个Ҏ供了一U方便的机制?/p> <p>以下代码提供了一个示例:</p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>var days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];<br /> <br /> for (day in days) {<br /> println(day);<br /> }</pre> </td> </tr> </tbody> </table>  <br /> <p>此脚本的输出如下所C:</p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>Mon<br /> Tue<br /> Wed<br /> Thu<br /> Fri<br /> Sat<br /> Sun</pre> </td> </tr> </tbody> </table>  <br /> <p>让我们将该示例分成几个部分?code>for</code> 表达式以 "for" 关键字开_</p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre><strong>for</strong> (day in days) {<br /> println(day);<br /> }</pre> </td> </tr> </tbody> </table>  <br /> <p><code>days</code> 变量是要?<code>for</code> 表达式处理的<em>输入序列</em>? 名称Q?/p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>for (day in <strong>days</strong>) {<br /> println(day);<br /> }</pre> </td> </tr> </tbody> </table>  <br /> <p>?<code>for</code> 表达式遍历该序列Ӟ<code>day</code> 变量用来存放当前:</p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>for (<strong>day</strong> in days) {<br /> println(day);<br /> }</pre> </td> </tr> </tbody> </table>  <br /> <p>h意,不需要在脚本中的其他位置声明 <code>day</code> 变量卛_其用在 <code>for</code> 表达式中。此外,在完成整个@环之后,无法访?<code>day</code>。程序员通常会赋予时变量(如该变量Q非常短的名Uͼ或由一? 字母构成的名Uͼ?/p> <p>在上例中Q未昄 <code>for</code> q回|?<code>for</code> 也是一个返回序列的表达式。以下代码显CZ两个使用 <code>for</code> 表达式从另一个序列创建序列的CZQ?/p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>// Resulting sequence squares the values from the original sequence.<br /> var squares = for (i in [1..10]) i*i; <br /> <br /> // Resulting sequence is ["MON", "TUE", "WED", and so on...]<br /> var capitalDays = for (day in days) day.toUpperCase();</pre> </td> </tr> </tbody> </table>  <br /> <p>h意,<code>toUpperCase</code> 函数?<code>String</code> 对象提供。您可以通过查阅 API 文档来查看完整的可用函数列表?/p> <div><a name="while"><strong>while 表达?/strong></a></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody> <tr> <td><img src="http://developers.sun.com.cn/javafx/1/tutorials/core/expressions/exp_files/a.gif" alt=" " border="0" height="4" width="1" /></td> </tr> </tbody> </table> </div> <p>另一个@环结构是 <em>while</em> 表达式。与作用于序列中的 <code>for</code> 表达式不同,<code>while</code> 表达式会一直@环,直到l定的表辑ּ?<code>false</code> 为止。尽?<code>while</code> 在语法上是表辑ּQ但是它的类型ؓ <code>Void</code>Q不q回倹{?/p> <p>下面提供了一个示例:</p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>var count = 0;<br /> while (count < 10) {<br /> println("count == {count}");<br /> count++;<br /> }</pre> </td> </tr> </tbody> </table>  <br /> <p>此脚本的输出如下所C:</p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>count == 0<br /> count == 1<br /> count == 2<br /> count == 3<br /> count == 4<br /> count == 5<br /> count == 6<br /> count == 7<br /> count == 8 <br /> count == 9</pre> </td> </tr> </tbody> </table>  <br /> <p>W一行声明一个名?<code>count</code> 的变量ƈ其初始化ؓ 0Q?/p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre><strong>var count = 0;</strong><br /> while (count < 10) {<br /> println("count == {count}");<br /> count += 1;<br /> }</pre> </td> </tr> </tbody> </table>  <br /> <p>W二行以 <code>while</code> 表达式开头。此表达式创Z一个@环(在左花括号和双括号之间Q,该@环会一直进行,直到 <code>count < 10</code> 的gؓ <code>false</code> 为止Q?/p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>var count = 0;<br /> <strong>while (count < 10) {</strong><br /> println("count == {count}");<br /> count += 1;<strong><br /> }</strong></pre> </td> </tr> </tbody> </table>  <br /> <p>While 表达式的M会输?<code>count</code> 的当前|然后?<code>count</code> 的值加 1Q?/p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>var count = 0;<br /> while (count < 10) { <strong><br /> println("count == {count}");<br /> count += 1;</strong><br /> }</pre> </td> </tr> </tbody> </table>  <br /> <p>?<code>count</code> {于 10 Ӟ循环退出。要创徏一个无限@环,请将 <code>true</code> 关键字放在左括号和叛_括号之间Q如 <code>while(true){}</code> 中所C?/p> <div><a name="break"><strong>break ?continue 表达?/strong></a></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody> <tr> <td><img src="http://developers.sun.com.cn/javafx/1/tutorials/core/expressions/exp_files/a.gif" alt=" " border="0" height="4" width="1" /></td> </tr> </tbody> </table> </div> <p><code>break</code> ?<code>continue</code> 表达式与循环表达式有兟뀂这两个表达式会影响循环q代Q?code>break</code> 完全攑ּ循环Q?<code>continue</code> 仅放弃当前P代?/p> <p>管 <code>break</code> ?<code>continue</code> 在语法上是表辑ּQ但它们的类型ؓ <code>Void</code>Q不q回倹{?/p> <p>CZQ?/p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>for (i in [0..10]) {<br /> if (i > 5) {<br /> break;<br /> }<br /> <br /> if (i mod 2 == 0) {<br /> continue;<br /> }<br /> <br /> println(i);<br /> }</pre> </td> </tr> </tbody> </table>  <br /> <p>输出Q?/p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>1<br /> 3<br /> 5</pre> </td> </tr> </tbody> </table>  <br /> <p>如果没有 <code>if</code> 表达式,该程序将只是输出 0 ?10 之间的数字?/p> <p>如果只有W一?<code>if</code> 表达式,E序在 <code>i</code> 的值大?5 ?em>? ?/em>循环Q?/p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>if (i > 5) {<br /> break;<br /> }</pre> </td> </tr> </tbody> </table>  <br /> <p>因此Q程序将仅输?1 ?5 之间的数字?/p> <p>通过dW二?<code>if</code> 表达式,E序仅攑ּ循环的当前P代?em>l箋</em>执行下一 个P代:</p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>if (i mod 2 == 0) {<br /> continue;<br /> }</pre> </td> </tr> </tbody> </table>  <br /> <p>在这U情况下Q只有当 <code>i</code> 为偶敎ͼ?<code>i</code> 能被 2 整除Q没有余敎ͼ时才执行 <code>continue</code>。出现这U情冉|Q将永远不会调用 <code>println()</code>Q? 因此输出中将不包含该数字?/p> <div><a name="throw"><strong>throw、try、catch ?finally 表达?/strong></a></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody> <tr> <td><img src="http://developers.sun.com.cn/javafx/1/tutorials/core/expressions/exp_files/a.gif" alt=" " border="0" height="4" width="1" /></td> </tr> </tbody> </table> </div> <p>在实际的应用E序中,正常的脚本执行流有时会被某个事g中止。例如,如果脚本从某个文件中d输入Q但是找不到该文Ӟ? 脚本无法l。我们将q种情况UCؓ“异常”?/p> <blockquote> <hr /> 注意Q异常是对象。它们的cd通常以它们所表示的情况命名(例如Q?code>FileNotFoundException</code> 表示找不到文件的情况Q。但是,定义一l特定于卛_l出的示例的异常不在本节的讨围之内。因此,我们用一个通用?<code>Exception</code> 对象Q从 Java ~程语言借用而来Q来说明 <code>throw</code>?code>try</code>?code>catch</code> ? <code>finally</code> 表达式? <hr /> </blockquote> <p>以下脚本定义Q和调用Q一个会抛出异常的函敎ͼ</p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>import java.lang.Exception;<br /> <br /> foo();<br /> <br /> println("The script is now executing as expected... ");<br /> <br /> function foo() {<br /> var somethingWeird = false;<br /> <br /> if(somethingWeird){<br /> throw new Exception("Something weird just happened!");<br /> } else {<br /> println("We made it through the function.");<br /> }<br /> }</pre> </td> </tr> </tbody> </table>  <br /> <p>按原栯行此脚本Q将 <code>somethingWeird</code> 讄?<code>false</code>Q? 输Z下消息:</p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>We made it through the function.<br /> The script is now executing as expected...</pre> </td> </tr> </tbody> </table>  <br /> <p>但是Q如果将该变量更改ؓ <code>true</code>Q则会抛出异常。在q行Ӟ该脚本将崩溃q显CZ下消息:</p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>Exception in thread "main" java.lang.Exception: Something weird just happened!<br /> at exceptions.foo(exceptions.fx:10)<br /> at exceptions.javafx$run$(exceptions.fx:3)</pre> </td> </tr> </tbody> </table>  <br /> <p>Z防止崩溃Q我们将需要?try/catch 表达式来包装 <code>foo()</code> 调用。顾名思义Q这些表辑ּ<em>试</em>执行某些代码Q但会在出现问题?em>捕捉</em>异常Q?/p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre><strong>try</strong> {<br /> foo();<br /> } <strong>catch</strong> (e: Exception) {<br /> println("{e.getMessage()} (but we caught it)");<br /> }</pre> </td> </tr> </tbody> </table>  <br /> <p>现在Q程序不会崩溃,而只是输出:</p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>Something weird just happened! (but we caught it)<br /> The script is now executing as expected...</pre> </td> </tr> </tbody> </table>  <br /> <p>q有一?<em>finally</em> 块(它在技术上不是表达式)Q无论是否抛Z异常Q该块始l在 try 表达式退Z后的某个旉执行?code>finally</code> 块用来执行无?<code>try</code> M是成功还是抛出异帔R需要执行的清除操作?/p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>try {<br /> foo();<br /> } catch (e: Exception) {<br /> println("{e.getMessage()} (but we caught it)");<br /> }<strong> finally</strong> {<br /> println("We are now in the finally expression...");<br /> }</pre> </td> </tr> </tbody> </table>  <br /> <p>E序输出现在为:</p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <pre>Something weird just happened! (but we caught it)<br /> We are now in the finally expression...<br /> The script is now executing as expected...</pre> <br /> <img src ="http://www.tkk7.com/asdtiang/aggbug/309687.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/asdtiang/" target="_blank">asdtiang</a> 2010-01-15 14:23 <a href="http://www.tkk7.com/asdtiang/articles/309687.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA FX语法学习----q算W?/title><link>http://www.tkk7.com/asdtiang/articles/309676.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Fri, 15 Jan 2010 05:03:00 GMT</pubDate><guid>http://www.tkk7.com/asdtiang/articles/309676.html</guid><wfw:comment>http://www.tkk7.com/asdtiang/comments/309676.html</wfw:comment><comments>http://www.tkk7.com/asdtiang/articles/309676.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/asdtiang/comments/commentRss/309676.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/asdtiang/services/trackbacks/309676.html</trackback:ping><description><![CDATA[ <br /> <div><a name="assignment"><strong>赋D符</strong></a></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody> <tr> <td><img src="http://developers.sun.com.cn/export/sites/default/im/a.gif" alt=" " border="0" height="4" width="1" /></td> </tr> </tbody> </table> </div> <p><em>赋D符</em> "=" 是您遇到的最常用的运符。用该q算W可以将其右侧的Dl其左侧的操作数Q?/p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" height="98" width="879"> <tbody> <tr> <td> <pre>result = num1 + num2;<br /> <br /> <br /> <br /> days = ["Mon","Tue","Wed","Thu","Fri"];</pre> </td> </tr> </tbody> </table>  <br /> <br /> <div><a name="arithmetic"><strong>术q算W?/strong></a></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody> <tr> <td><img src="http://developers.sun.com.cn/export/sites/default/im/a.gif" alt=" " border="0" height="4" width="1" /></td> </tr> </tbody> </table> </div> <p>使用<em>术q算W?/em>可以执行加、减、乘和除q算?code>mod</code> q算W用一个操作数除以另一个操作数q将余数作ؓl果q回?/p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>+ Q加q算W)<br /> <br /> <br /> <br /> - Q减q算W)<br /> <br /> <br /> <br /> * Q乘q算W)<br /> <br /> <br /> <br /> / Q除q算W)<br /> <br /> <br /> <br /> mod Q求余运符Q?/pre> </td> </tr> </tbody> </table>  <br /> <p>以下脚本提供了一些示例:</p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>var result = 1 + 2; // result is now 3<br /> <br /> <br /> <br /> println(result);<br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> result = result - 1; // result is now 2<br /> <br /> <br /> <br /> println(result);<br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> result = result * 2; // result is now 4<br /> <br /> <br /> <br /> println(result);<br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> result = result / 2; // result is now 2<br /> <br /> <br /> <br /> println(result);<br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> result = result + 8; // result is now 10<br /> <br /> <br /> <br /> println(result);<br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> result = result mod 7; // result is now 3<br /> <br /> <br /> <br /> println(result);</pre> </td> </tr> </tbody> </table>  <br /> <p>您还可以l合使用术q算W与赋D符来创?em>复合赋?/em>。例如,<code>result += 1;</code> ?<code>result = result+1;</code> 都会?<code>result</code> 的值加 1?/p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>var result = 0;<br /> <br /> <br /> <br /> result += 1;<br /> <br /> <br /> <br /> println(result); // result is now 1<br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> result -= 1;<br /> <br /> <br /> <br /> println(result); // result is now 0<br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> result = 2;<br /> <br /> <br /> <br /> result *= 5; // result is now 10<br /> <br /> <br /> <br /> println(result);<br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> result /= 2; // result is now 5<br /> <br /> <br /> <br /> println(result);</pre> </td> </tr> </tbody> </table>  <br /> <p>唯一不能按照此方式用的术q算W是 <code>mod</code>。例如,如果您希望将 <code>result</code> 除以 2Q然后将余数重新赋给其自w,则需要编写:<code>result = result mod 2;</code></p> <div><a name="unary"><strong>一元运符</strong></a></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody> <tr> <td><img src="http://developers.sun.com.cn/export/sites/default/im/a.gif" alt=" " border="0" height="4" width="1" /></td> </tr> </tbody> </table> </div> <p>大多数运符都需要两个操作数Q?em>一元运符</em>仅用一个操作数来执行诸如按一递增/递减某个倹{对某个 数字求反或对布尔值求反之cȝ操作?/p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>- 一元减q算W;Ҏ个数字求?br /> <br /> <br /> <br /> ++ 递增q算W;?1 递增某个?br /> <br /> <br /> <br /> -- 递减q算W;?1 递减某个?br /> <br /> <br /> <br /> not 逻辑求补q算W;对布值求?/pre> </td> </tr> </tbody> </table>  <br /> <p>以下脚本用于试一元运符Q?/p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>var result = 1; // result is now 1<br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> result--; // result is now 0<br /> <br /> <br /> <br /> println(result);<br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> result++; // result is now 1<br /> <br /> <br /> <br /> println(result);<br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> result = -result; // result is now -1<br /> <br /> <br /> <br /> println(result);<br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> var success = false;<br /> <br /> <br /> <br /> println(success); // false<br /> <br /> <br /> <br /> println(not success); // true</pre> </td> </tr> </tbody> </table>  <br /> <p>递增/递减q算W可以在操作C前(前缀Q或之后Q后~Q应用。代?<code>result++;</code> ? <code>++result;</code> 都将D <code>result</code> 的值加 1。二者之间的唯一区别是前缀版本 (<code>++result</code>) 得到的是递增后的|而后~版本 (<code>result++</code>) 得到的是原始倹{(您可以通过以下Ҏ来记忆:<code>++result</code> 先执行递增再获得|?<code>result++</code> 先获得值再执行递增。)如果您只是执行简单的递增/递减Q则选择哪个版本都一栗但是,如果您将该运符作ؓ较大表达式的一部分q行使用Q则选择不同的版 本会对结果生很大的影响?/p> <p>以下脚本说明了这U区别:</p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>var result = 3;<br /> <br /> <br /> <br /> result++;<br /> <br /> <br /> <br /> println(result); // result is now 4<br /> <br /> <br /> <br /> ++result;<br /> <br /> <br /> <br /> println(result); // result is now 5<br /> <br /> <br /> <br /> println(++result); // result is now 6<br /> <br /> <br /> <br /> println(result++); // this still prints 6!<br /> <br /> <br /> <br /> println(result); // but the result is now 7</pre> </td> </tr> </tbody> </table>  <br /> <div><a name="relational"><strong>相等和关p运符</strong></a></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody> <tr> <td><img src="http://developers.sun.com.cn/export/sites/default/im/a.gif" alt=" " border="0" height="4" width="1" /></td> </tr> </tbody> </table> </div> <p>相等和关p运符定一个操作数是大于、小于、等于还是不{于另一个操作数?/p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>== {于<br /> <br /> <br /> <br /> != 不等?br /> <br /> <br /> <br /> > 大于<br /> <br /> <br /> <br /> >= 大于或等?br /> <br /> <br /> <br /> < 于<br /> <br /> <br /> <br /> <= 于或等?/pre> </td> </tr> </tbody> </table>  <br /> <p>以下脚本用于试q些操作敎ͼ</p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>def num1 = 1;<br /> <br /> <br /> <br /> def num2 = 2;<br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> println(num1 == num2); // prints false<br /> <br /> <br /> <br /> println(num1 != num2); // prints true<br /> <br /> <br /> <br /> println(num1 > num2); // prints false<br /> <br /> <br /> <br /> println(num1 >= num2); // prints false<br /> <br /> <br /> <br /> println(num1 < num2); // prints true<br /> <br /> <br /> <br /> println(num1 <= num2); // prints true</pre> </td> </tr> </tbody> </table>  <br /> <div><a name="conditional"><strong>条gq算W?/strong></a></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody> <tr> <td><img src="http://developers.sun.com.cn/export/sites/default/im/a.gif" alt=" " border="0" height="4" width="1" /></td> </tr> </tbody> </table> </div> <p><em>条g?(and)</em> ?em>条g?(or)</em> q算W用于对两个布尔表达式执行条件运。这些运符会表现出“短\”行ؓQ也是_仅在必要时才计算W二个操作数Q例如,对于 <code>and</code> q算Q如果第一个表辑ּ的结果ؓ falseQ将不计第二个表达式。对?<code>or</code> q算Q如果第一个表辑ּ的结果ؓ <code>true</code>Q? 不计算W二个表辑ּ?/p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>and<br /> <br /> <br /> <br /> or</pre> </td> </tr> </tbody> </table>  <br /> <p>以下脚本定义?<code>username</code> ?<code>password</code> 变量Q然后输出各个条件的匚w,从而说明了q些q算W的用法Q?/p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>def username = "foo";<br /> <br /> <br /> <br /> def password = "bar";<br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> if ((username == "foo") and (password == "bar")) {<br /> <br /> <br /> <br /> println("Test 1: username AND password are correct");<br /> <br /> <br /> <br /> }<br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> if ((username == "") and (password == "bar")) {<br /> <br /> <br /> <br /> println("Test 2: username AND password is correct");<br /> <br /> <br /> <br /> }<br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> if ((username == "foo") or (password == "bar")) {<br /> <br /> <br /> <br /> println("Test 3: username OR password is correct");<br /> <br /> <br /> <br /> }<br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> if ((username == "") or (password == "bar")) {<br /> <br /> <br /> <br /> println("Test 4: username OR password is correct");<br /> <br /> <br /> <br /> }</pre> </td> </tr> </tbody> </table>  <br /> <p>输出为:</p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>Test 1: username AND password are correct<br /> <br /> <br /> <br /> Test 3: username OR password is correct<br /> <br /> <br /> <br /> Test 4: username OR password is correct</pre> </td> </tr> </tbody> </table>  <br /> <div><a name="comparison"><strong>cd比较q算W?/strong></a></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody> <tr> <td><img src="http://developers.sun.com.cn/export/sites/default/im/a.gif" alt=" " border="0" height="4" width="1" /></td> </tr> </tbody> </table> </div> <p><code>instanceof</code> q算W将对象与指定的cd相比较。您可以使用该运符来确定某个对象是否ؓ特定cȝ实例Q?/p> <!-- <div><strong>Lorem Ipsem Dolor</strong></div> <div> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4"> <tr> <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" " /></td> </tr> </table> </div> --> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tbody> <tr> <td> <pre>def str1="Hello";<br /> <br /> <br /> <br /> println(str1 instanceof String); // prints true<br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> def num = 1031;<br /> <br /> <br /> <br /> println(num instanceof integer); // prints true</pre> </td> </tr> </tbody> </table>  <br /> <p>在本教程的最后一课中深入了解cdl承后,您将发现该运符非常有用?/p> <img src ="http://www.tkk7.com/asdtiang/aggbug/309676.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/asdtiang/" target="_blank">asdtiang</a> 2010-01-15 13:03 <a href="http://www.tkk7.com/asdtiang/articles/309676.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA FX语法学习-----序列http://www.tkk7.com/asdtiang/articles/309671.htmlasdtiangasdtiangFri, 15 Jan 2010 04:58:00 GMThttp://www.tkk7.com/asdtiang/articles/309671.htmlhttp://www.tkk7.com/asdtiang/comments/309671.htmlhttp://www.tkk7.com/asdtiang/articles/309671.html#Feedback0http://www.tkk7.com/asdtiang/comments/commentRss/309671.htmlhttp://www.tkk7.com/asdtiang/services/trackbacks/309671.html创徏序列的一U方法是昑ּ列出其各个项。每个项都用一个逗号q行分隔Q列表用Ҏ?"[" ?"]" 括v来。例如,下面的代码:

def weekDays = ["Mon","Tue","Wed","Thu","Fri"];
 

声明了一个序列ƈ其赋给 weekDays。我们在q个例子中用了 defQ? 因ؓ在创建序列后我们不打改变它的倹{这里,~译器知道我们打创Z?#8220;字符串序?#8221;Q因为每个项都声明ؓ String 字面倹{如果序列是使用 Integer 声明的(例如Q?code>def nums = [1,2,3];Q, ~译器将知道我们打算创徏“整数序列”?/p>

您还可以昑ּ指定序列的类型,Ҏ是修改序列的声明Q其包含后?"[]" 的类型名U?/p>
def weekDays: String[] = ["Mon","Tue","Wed","Thu","Fri"];
 

q会通知~译?weekDays 用来存?String 序列Q而不是单? StringQ?/p>

您还可以在序列中声明其他序列Q?/p>
def days = [weekDays, ["Sat","Sun"]];
 

在这U情况下Q编译器自动^展开嵌套的序列以构成单个序列Q这样上面的代码q效于Q?/p>
def days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];
 

q可以通过化表C法来更方便地创建可构成{差数列的序列。要创徏一个由数字 1 ?100 构成的序列,请用以下代码:

def nums = [1..100];

您可以用布表辑ּQ又UCؓ谓词Q声明一个ؓ现有序列的子集的新序列。例如,误虑以下代码Q?/p>
def nums = [1,2,3,4,5];
 

要创建第二个序列Q基于此W一个序列中的项Q但仅包含大?2 的数字,请用以下代码:

def numsGreaterThanTwo = nums[n | n > 2];
 

可以上面的代码行用中文表示为:“?nums 序列中选择值大?2 的所有项q将q些赋l名?numsGreaterThanTwo 的新序列?#8221;以粗体突出显C的“值大? 2”子句是谓词?/p>

在这些代码中Q?/p>

  1. 新创建的序列存储?numsGreaterThanTwo 中?/li>
  2. 代码 nums[n | n > 2]; 中标Cؓ_体的部分指定要从中复制的原始序列。在我们的示例中Q?code>nums 是原始序列的名称?/li>
  3. q会选择 nums 中的,q按序q回一个由使表辑ּ?true 的项构成的新序列?/li>
  4. "|" 字符用来在视觉上变?"n" 与代码的其余部分隔开Q?code>nums[n | n > 2];
  5. 代码 nums[n | n > 2]; 中标Cؓ_体的部分定义一个布?em>表达?/em>Q该表达式指定将当前复制到新序列中旉要满的条g?/li>

序列中的Ҏ按数字烦引(?0 开始)q行讉K的。要讉K单个,请键入序列名Uͼ后跟该项的数字烦引(用方括号括v来)Q?/p>
def days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];

println(days[0]);
println(days[1]);
println(days[2]);
println(days[3]);
println(days[4]);
println(days[5]);
println(days[6]);
 

q会以下内容输出到屏幕上:

Mon
Tue
Wed
Thu
Fri
Sat
Sun
 

您还可以使用后跟序列名称?sizeof q算W来定序列的大:

sizeof days
 

以下代码会将 "7" 输出到屏q上Q?/p>
def days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];
println(sizeof days);
 

insert 关键字可用于在序列中特定的前面?em>后面? ?/em>一个项?/p>


注:从技术上?序列?em>不可变的
Q即一l创建就怸更改。在修改序列Q例如通过插入或删除项Q时Q会在后台创 Z个新序列q新指定序列变量,q会lh一U序列已被修改的印象?

让我们通过重新创徏 days 序列来对此进行研I。请注意Q我们现在用 var 来声明变? daysQ因为我们会在创建原始序列后改变它的|

var days = ["Mon"];
 

此时Q该序列仅包含一个项 "Mon"?/p>

我们可以使用 insert ?into 关键字在该序列的末尾插入 "Tue"Q?/p>
insert "Tue" into days;
 

cM圎ͼ我们也可以添?"Fri"?code>"Sat" ?"Sun"Q?/p>
insert "Fri" into days;
insert "Sat" into days;
insert "Sun" into days;
 

该序列中现在包含Q?code>"Mon"?code>"Tue"?code>"Fri"?code>"Sat" ?"Sun"?/p>

我们q可以?insert ?before 关键字在l定索引处的前面插入一个项。请CQ烦引是? 0 开始的Q因此,在当前的序列中,"Fri" 位于索引位置 2。因此,我们可以?"Fri" 前面插入 "Thu"Q如下所C:

insert "Thu" before days[2];
 

该序列中现在包含Q?code>"Mon"?code>"Tue"?code>"Thu"?code>"Fri"?code>"Sat" ?"Sun"?/p>

要在 "Tue" 后面插入 "Wed"Q我们可以?insert ? after 关键字:

insert "Wed" after days[1];
 

该序列现在包含一周中的每一天:"Mon"?code>"Tue"?code>"Wed"?code>"Thu"?code>"Fri"?code>"Sat" ?"Sun"?/p>

通过使用 delete ?from 关键字可以轻村֜从序列中删除:

delete "Sun" from days;
 

该序列中现在包含Q?code>"Mon"?code>"Tue"?code>"Wed"?code>"Thu"?code>"Fri" ?"Sat"?/p>

q可以删除位于特定烦引位|的V以下代码从该序列中删除 "Mon"Q请CQ?code>"Mon" 是第一个项Q因此它的烦引位|ؓ 0Q?/p>
delete days[0];
 

要删除序列中的所有项Q请使用后跟序列名称?delete 关键字:

delete days;
 

h意,delete 仅从序列中删除项Q而不从脚本中删除 days 变量。您仍可以像以前那样讉K days 变量q向其中d新项?/p>

使用 reverse q算W可以轻村֜颠倒序列中的ơ序Q?/p>
var nums = [1..5];
reverse nums; // returns [5, 4, 3, 2, 1]
 

有时Q您可能希望对序列进行比较,看它们是否相{。序列是按值来比较是否相等的:如果它们的长度相同而且各个相{,则它 们相{?/p>

让我们创Z个具有相同内容的序列来对此进行测试:

def seq1 = [1,2,3,4,5];
def seq2 = [1,2,3,4,5];
println(seq1 == seq2);
 

表达?seq1 == seq2 的gؓ trueQ因? 个序列具有相同数量的,而且q两个序列中每个的值都相等。因此,q些代码会将 "true" 输出到屏q上?/p>

通过更改其中一个序列中的数量Q而不更改另一个序列)Q这两个序列现在h不同的长度:

def seq1 = [1,2,3,4,5];
def seq2 = [1,2,3,4,5,6];
println(seq1 == seq2);
 

׃W二个序列比W一个序列长Q从而这两个序列不相{,因此该脚本的输出?"false"?/p>

我们q可以通过更改的值来使两个序列不相等Q即使这两个序列的长度仍相同Q:

def seq1 = [1,2,3,4,5];
def seq2 = [1,3,2,4,5];
println(seq1 == seq2);
 

׃q两个序列不相等Q因此这些代码将再次输出 "false"?/p>

序列子集提供对序列某些部分的讉K?/p>

seq[a..b]

此语法提供对位于索引 a 和烦?b之间Q含 a ? bQ各个项的访问。以下脚本创Z? weekend 序列Q其中仅包含 "Sat" ?"Sun" V?/p>
def days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];
def weekend = days[5..6];
 

seq[a..<b]

使用 "<" 字符可以讉K位于索引 a 和烦?b 之间Q含 aQ?em>不含 bQ的V我们可以对 days 使用此方法来创徏一?weekdays 序列Q其中包含项 "Mon" ?"Fri"?/p>
def days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];
def weekdays = days[0..<5];
 

seq[a..]

通过省略W二个烦引,可以讉K从烦?a 到序列末֤的所有项。ؓ了与上一个示例保持一_我们可以按如下方式创? weekend 序列Q?/p>
def days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];
def weekend = days[5..];
 

seq[a..<]

最后,您可以用不带第二个索引?"<" 来访问从索引 a 到序列末֤的所有项Q?em>? ?/em>最后一)?/p>
def days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];
def days2 = days[0..<];
 

此版本会创徏一?days2 序列Q其中包含项 "Mon" ? "Sat"?/p>




asdtiang 2010-01-15 12:58 发表评论
]]>JAVA FX语法学习----基础http://www.tkk7.com/asdtiang/articles/309662.htmlasdtiangasdtiangFri, 15 Jan 2010 04:14:00 GMThttp://www.tkk7.com/asdtiang/articles/309662.htmlhttp://www.tkk7.com/asdtiang/comments/309662.htmlhttp://www.tkk7.com/asdtiang/articles/309662.html#Feedback0http://www.tkk7.com/asdtiang/comments/commentRss/309662.htmlhttp://www.tkk7.com/asdtiang/services/trackbacks/309662.htmlvar ?def 关键字声明的。二者之间的区别在于Q?br />     在脚本的整个生命周期内都可以?var 变量赋予新|
    ?def 变量在被首次赋予新值后保持不变?br /> 函数实例Q?br />
function add(argOne: Integer, argTwo: Integer) : Integer {

result 
= argOne + argTwo;//U色表示参数和返回类?/span>

println(
"{argOne} + {argTwo} = {result}");

return result;

}

一个类的实例:

其实有了JAVA的基Q类的概念还是比较好理解的。只是写法上不同而已
public class Address {

 
public   var street;
 
public   var city;
 
public   var state;
 
public   var zip;
}
///在另一个类中的使用
def myAddress = Address {
     street: 
"1 Main Street";
     city: 
"Santa Clara";
     state: 
"CA";
     zip: 
"95050";
}
var address;

address=Address{
        street: 
"1 Main Street";
     city: 
"Santa Clara";
     state: 
"CA";
     zip: 
"95050";
        }


数据cdQJavaFX Script ~程语言支持字符串类型、数值类型、布? (true/false)  

cd。还支持Z旉Q持l时_的类型,以及用于指示函数不返回Q何值和指示~少正常值的Ҏcd

A:String
def name = 'Joe';
var s 
= "Hello {name}"// s = 'Hello Joe'
def answer = true;
var s 
= "The answer is {if (answer) "Yes" else "No"}"// s = 'The answer is Yes'
def one = "This example ";
def two 
= "joins two strings.";
def three 
= "{one}{two}";      // join string one and string two
println(three);
BQNumber and Integer
def numOne : Number = 1.0;
def numTwo : Integer 
= 1;

q两U类型之间的区别是,Number 表示点数字Q?Integer  

仅表C整数。只有当您确实需要Q点精度时才应使用 NumberQ否则应首?Integer

注意Q从 SDK 1.1 开始,该语aq包含与 Java ~程语言中的数值类型相一致的数值类型。因此,
数值类型的完整列表为:
Byte
?code>Short?code>Number?code>Integer?code>Long?code>Float?code>Double?Character?br /> 但以上给出的仍是正确的:大多数程序员在其~写的脚本中只需要? IntegerQ或NumberQ?br /> 如果您在学习该语a时具?Java

~程语言背景q且需要完成一个必M用其他数值类型的dQ那么请C您的脚本现在可以使用q些附加cd?

DQ其?br /> function printMe() :Void{ ///注意V是大写的
println("I don't return anything!");

Duration cd表示固定的时间单元(毫秒、秒、分钟或时Q?br /> null 是一个特D的|用来指示~少正常倹{null 与零或空字符串不同,因此 null比较与零或空字符串比较不同?br />


asdtiang 2010-01-15 12:14 发表评论
]]>
վ֩ģ壺 ĻƵ| պ޹ۺϾþþ| Ʒҹ| ѾþþƷ| ձɫͼ߹ۿ| 456˳߲վ| ˳www| һëƬ߹ۿ| ŷۺһ| ޳AVƬһ| ëƬ18ŮëƬѿ | 3344߿Ƭ| һâ޵þ| ɫƷvrһ| ëƬƵ߿ѹۿ| ƷһƵ߹ۿ | Ļ޹˾þþƷ| Ƶѹۿ| ҹ޹Ʒ| 911Ʒձ| mm1313޾Ʒ| Ůվѿվ| Ȱ׽һ| 99aƷ| ŷ޹Ƶ| ߲| һƬaѲſ֮| þùѸ| 99re8оƷƵ| ˵avһ2| ޹Ƶ߹ۿ| һۿ| xxxxx| רAVվ | Ů18ëƬˮѿ| 99þþƷѾƷ| ƷŮٸaѾþ| MM1313޾Ʒþ| ۺһ| þĻƷѩ| ҹƷţӰ|