星期五, 6月 06, 2008

[Boo]Boo(17)-結構與列舉

結構(struct)跟類別很類似,最明顯的差別在於 class 被換成 struct 了,類別的一些特性也可以在結構上使用。
其他的差別:無法繼承類別、結構,只能實作 Interface﹔結構是值型別,在複製實體時,是整個克隆(Clone)而不是像類別一樣,只做參考。

struct Dog:
def constructor( name ):
_name=name
[property(Name)]
_name as string
emptydog=Dog()
print "emptydog.Name=${emptydog.Name}" // 什麼都沒印出
lucky=Dog("Lucky")
print "lucky.Name=${lucky.Name}" // 印出 Lucky


列舉(enum),如果你有用過 C/C++/C# 的話,應該不陌生:

// 宣告列舉
enum Day:
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Sunday
// 也可以指定數值
enum Task:
TODO=100
FIXME=101
// 列印
print Day.Sunday
// 尋訪列舉型別裡所有元素
for s in Enum.GetNames(Day):
print s
// 另一種
for n,v in array( zip( Enum.GetNames(Task), Enum.GetValues(Task)) ):
print "${n}=${v}"

沒有留言: