轉載自:www.66rpg.com
原作者:Dubealex
Near Fantastica(特別講)
主講人(翻譯):frantice
電子書製作:小湖
第三講 基本詞彙和語法(下)
大家應該沒忘記上回的內容吧^0^,好,不廢話了,今天繼續!
我們來看看他的腳本是怎麼寫的,因為說明較長,所以給腳本標上了行數:
1 class Say_Something
我們這裡創建了一個新的對象叫"message1"它將做為Say_Something的一個instance來使用.也就是說我們對這個對象的任何操作都是在這個Say_Something類里來定義的".我們已經在這個類的initialize方法裡添加了Argument 接收器(不明白的見第一講的圖示), 我們需要發送這些argument .那麼怎麼發送到這個類里呢?和我們處理它的方法一樣,在這個類名里列出他們就行了
2 attr_accessor :greeting
我們在這裡定義了一個ATTR 值,全稱是 Attribute. 我們可以簡單地用ATTR_ACCESSOR 來定義一個新的可讀可寫,適用於由Say_Something創建的任何對象的instance的功能.我們第一個ATTR 的名字叫greeting.
3 attr_accessor :name
定義另一個ATTR, 名字叫name
4 def initialize(greeting, name)
我們定義了一個新的方法initialize.看過前面教學,你大家應該明白這個initialize 的方法是在一個對象由class類創建時,第一個執行的方法.所以我們添加Argument 接受器,那麼這個方法可以被接收到了. 在這個例子中, 這些"argument" (ATTR)是"greeting" 和 "name". 我們在冒號的兩邊放上這些argument接收器和方法的名字. 注意這些"Argument 接受器是 " "接收者"; 也就是說逗號兩邊的都是變量名,它們在後來還是有用途的.
5 @greeting=greeting
這裡我們新定義了一個"Instance 變量" , 他們把"greeting"這個數據傳送出去..一個 instance 變量都由 @ 開頭,在同類的每個方法中都非常有用.它們都在方法中定義 通過這樣我們就能命令RMXP接收"greeting" 並把它放在"@greeting" 里以便其他方法中調用
6 @name=name
同上,不過這回的attribute是」name」
7 end
結束方法initialize
8 def say
定義一個新的叫」say」的方法
9 print @greeting + " " + @name
我們這樣編碼,當」say」這個信息被對象接收了會怎麼樣.這裡是顯示"@greeting"的內容, 一個空號後加入"@name".的內容.
10 end
結束say的方法定義
11 end
結束 Say_Something 這個類
好了,腳本是看完了,再完整地看一遍:
class Say_Something
attr_accessor :greeting
attr_accessor :name
def initialize(greeting, name)
@greeting=greeting
@name=name
end
def say
print @greeting + 「 「 + @name
end
end
是不是不那麼撲朔迷離了??
那麼接下來看事件頁腳本,我們也一行一行地看^0^.
1 message1=Say_Something.new("Hello", "Alex")
我們創建了一個新的目標對象叫"message1" ,它是類"Say_Something"的一個instance (也就是說我們對這個對象的任何操作都是在這個Say_Something類里來定義的).我們在這個類的initialize 方法裡已經添加了 "Argument 接受器" , 我們就要發送這些 argument.
2 message2=Say_Something.new("Hello", "Peter")
同1
3 print message1.name
我們用Ruby 的命令"print" 來顯示對象"message1"中儲存的name名字.大家可以看到, 只用這個類的ATTR中定義過的name 名字就能獲得對象的attributes (內容)
4 print message2.name
同3
5 message1.say
我們現在發送了信息給對象"message1",這個信息就是"say". 然後,你告訴"message1" 執行"say」的功能; 再然後,"message1"在它的類"Say_Something"尋找定義過的命令.就這樣,目標對象就返回到了class類中定義過的動作,也就是在屏幕中顯示.
6 message2.say
同5
完整地看下事件頁這幾行腳本:
message1=Say_Something.new("Hello", "Alex")
message2=Say_Something.new("Hello", "Peter")
print message1.name
print message2.name
message1.say
message2.say
好了,今天的教學就到這了,好好回顧一下前三講的東西,主要是理論部分較多,需要好好理解~接下來我們就主要學習如何編碼了,基礎要掌握好才能建好高樓哦~~