Ruby基礎代碼經驗分享
Ruby語言的學習和其他編程語言一樣,首先要從基礎開始。在這里我們為大家介紹了一下Ruby基礎代碼中的BEGIN和END的編寫方式。#t#
Ruby基礎代碼之BEGIN 塊
BEGIN 塊中的代碼在所有代碼執行之前執行,Ruby 允許設置多個 BEGIN 塊并按出現的順序執行塊中的代碼。C# 程序員注意下面的代碼
- BEGIN
- {
- print "OnInit(object sender,
EventArgs args)\n" - }
- BEGIN
- {
- print "OnLoad(object sender,
EventArgs args)\n" - }
- print "Running"
上面的代碼看上去很美吧,可惜的是上面的代碼段會出現 parse error,正確的代碼應該是
- BEGIN{
- print "OnInit(object sender,
EventArgs args)\n"- }
- BEGIN{
- print "OnLoad(object sender,
EventArgs args)\n"- }
- print "Running"
正如上面的代碼段所呈現的,只有當起始大括號和 BEGIN 標識符位于同一行時塊內的代碼才能得到正確的執行。同時 BEGIN 塊也不受任何控制結構的影響,因為只要出現 BEGIN 塊就會得到執行并且只執行一次。
- i = 0
- while i < 10
- # 雖然處理循環結構中,但 BEGIN
塊內的代碼仍然只執行一次- BEGIN{
- print "OnInit(object sender,
EventArgs args)\n"- }
- i += 1
- end
- if false
- # BEGIN 完全不受 if 的影響,
只要出現 BEGIN 塊就會得到執行- BEGIN{
- print "OnLoad(object sender,
EventArgs args)\n"- }
- end
- print "Running"
基于只要現出 BEGIN 就會得到執行和 BEGIN 在所有代碼執行之前執行的原則,即使 BEGIN 塊前出現了代碼,該代碼仍然會等待 BEGIN 塊執行之后再執行。比如下面的代碼段輸出結果仍然是 OnInit - OnLoad - Running。
- print "OnLoad(object sender,
EventArgs args)\n"- BEGIN{
- print "OnInit(object sender,
EventArgs args)\n"- }
- print "Running"
Ruby基礎代碼之END 塊
END 塊與 BEGIN 塊相反,在所有代碼執行之后執行,多個 END 塊時最先出現的 END 塊最后執行。除此之外,END 塊雖然不受 while 的影響,但是可能通過 if 來控制 END 塊的執行與否。比如下面代碼的輸出結果就是 Start - Load - Unload。
- if false
- END{
- # 永遠不輸出
- print "Init"
- }
- end
- END{
- # 最后輸出
- print "Unload\n"
- }
- END{
- # 先于 Unload 輸出
- print "Load\n"
- }
- # 最先輸出
- print "Start\n"
以上就是我們為大家介紹的Ruby基礎代碼講解。