JavaFX教程-函式、陣列、表示式和操作

梧桐雨—168發表於2008-03-18

JavaFX函式代表了JavaFX程式語言的純函式子集。函式體可以僅包含一組變數宣告和一個返回語句。JavaFX也提供了過程(procedures)(被呼叫的操作,詳見下面關於操作的章節),裡面可以包括任意數量的宣告、條件語句、迴圈條件、try/catch等等。語句在函式中的給定順序並不很重要。下面是一個簡單的函式程式的例如:

	function z(a,b) {
	   var x = a + b;
	   var y = a - b;
	   return sq(x) / sq (y);
	}
	
	function sq(n) {return n * n;}
	
	function main() {
	   return z(5, 10);
	}

儘管JavaFX語言是靜態型別的,但這裡並沒有強制的型別宣告(後面會詳細敘述)。

最常用的資料結構是陣列,它在JavaFX中通過方括弧和逗號來宣告:
	var week_days = ["Mon","Tue","Wed","Thur","Fri"];
	var days = [week_days, ["Sat","Sun"]];

陣列代表了一組順序的物件。JavaFX中的陣列本身不是物件,而且不能巢狀。建立巢狀陣列的表示式(例如上面“days”的初始化方式)會被自動扁平化,例如:

	days == ["Mon","Tue","Wed","Thur","Fri","Sat","Sun"]; // returns true

陣列的大小可以通過JavaFX的sizeof操作符確定:

	var n = sizeof days; // n = 7

對於陣列成員形成數列(arithmetic series)的陣列,JavaFX提供了一種簡寫符號:“..”。下面提供了定義階乘函式和奇數求和函式的示例,其中“result”的數值是1至100中奇數的和:
	function fac(n) {return product([1..n]);}
	var result = sum([1,3..100]);

陣列中的所有元素必須是同一種型別。

陣列可以像在Java中那樣通過索引訪問:

        var wednesday = days[2];

JavaFX中的[]操作符還可用來表示選擇(類似XPath的用法)。在這種情況下,[]中包含的表示式應是一個布林表示式。此表示式可以返回一個新的陣列,此陣列中只包含滿足[]中斷言(predicate)的成員。

就像在XPath一樣,可以在[]操作符包含的斷言中通過.操作符訪問上下文物件。例如:

	var nums = [1,2,3,4];
	var numsGreaterThanTwo = nums[. > 2]; // yields [3, 4]

另一種方法,也可以將變數宣告為上下文物件。例如,這種方式與上面的方式等價:

	numsGreaterThanTwo = nums[n|n > 2];

JavaFX中的indexof操作符返回物件在陣列中的順序位置(類似XPath中的position()函式)。

下面list的car和cdr可以用選擇表示式來表示:

	function car(list) {return list[indexof . == 0];}
	function cdr(list) {return list[indexof . > 0];}

當然,car可以用更簡單、高效的方式表示:

	function car(list) {return list[0];}

例如:

	var list = [1..10];
	car(list); // yields 1
	cdr(list); // yields [2,3,4,5,6,7,8,9,10]

JavaFX中的空陣列[]null等價,例如:

	[] == null // yields true
	sizeof null // yields 0

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13270562/viewspace-209688/,如需轉載,請註明出處,否則將追究法律責任。

相關文章