[Ruby] 3rd Game

3.2.1.6 Backtick command execution

哦耶,要來講Backtick了,就是「`」這個符號,這在很多語言上面都是用來執行外部指令,這個指令真的是很方便,特別是要呼叫一些系統指令來做事的話,這個東西就一定可以幫上很多忙。

來個書上的例子:
http://gist.github.com/289810.js?file=gistfile1.rb

在這我們就可以自己去控制windows這個變數,如果是True的話就代表是在W$下執行這段程式,所以listcmd就要選擇dir,反之則用ls,真是幾行Code就把他用到出神入化XD!!而如果要在String內解析變數的話,就要用#{變數名稱}的方法,這個可能之後會很常用。

3.2.1.7 String literals and mutability

先來段原文:

Each time Ruby encounters a string literal, it creates a new object. If
you include a literal within the body of a loop, Ruby will create a new object for each
iteration.

大意是說,如果是用「字面」的方式去操作一個String的物件的話,在Ruby下會被視為不用的物件,請看下面的例子:
http://gist.github.com/289823.js?file=gistfile1.rb

恩哼,還蠻清楚的吧,我們利用times這個Method來做個實驗,發現他們各自是不同的物件,但是直覺上可能會認為是同一個,所以要避免這種做法。

3.2.1.8 The String.new method

所以我們可以用new這個method去產生個別的物件… 結束了。

其實怎麼用還是看人啦,OO玩到走火入魔的人大概會用String.new(“test”)吧,但是如果是像我這種懶人,只要避免Loop的情況,其他的就讓直譯器幫我判斷吧XD。

3.2.2 Character Literals

哦耶,一直用String真的有點煩,如果只是想要表示一個字元也來個Sring這樣不會太超過嗎??有點殺雞用屠龍刀的感覺,所以在Ruby又貼心的提供了一個方便的小東西叫「字元字面」(好鳥的名字,記英文就好啦)
http://gist.github.com/289852.js?file=gistfile1.rb
我查了一下,這類的變數是屬於「Fixnum」這個類別下的,所以它是以數字的方式來儲存這類的變數(見上例)。

3.2.3 String Operators

在String Class內提供了兩種method,一個叫「<<」、一個叫「+」,來看一下官方的解釋:

1st 「<<」
Append—Concatenates the given object to _str_

2nd「+」
Concatenation—Returns a new +String+ containing _other_str_ concatenated to _str_.

看完了解釋,可以了解到它們都是做了串接的效果,可以把兩個String的物件串接在一起,只是不同的用法而已,來看下面的例子了解一下:
http://gist.github.com/289869.js?file=gistfile1.rb
很簡單吧XD~我這個白痴都看的懂了。

先寫到這,其他的再慢慢更新。

Leave a Reply

Your email address will not be published. Required fields are marked *