2008年5月1日木曜日

Chapter 7 Expressions

要点だけ書いていく。

--
値を返してしかべき、ものは値を返す。これが信頼ということか。

* Operator Expressions
かなりのOperatorは、実はmethod callであるとのこと。ここも関数型に近いところかな。

あと、[]みたいな変なのもある。
class Song
def [](from,to)
result = Song.new(...
...
とすると、
song[0, 15].play
とできる。


* Miscellaneous Expressions

** Command Expansion

`date`でOSのコマンドの出力が文字列で返る。

exit statusはグローバル変数$?に入る。


* Assignment

代入も値を返す。

a = (b = 1 + 2) + 3

objectsのattributesへの代入は、実はmethod callである。

song.duration = 234

というのは、

song.duration=(234)

であり、duration=というmethodである。


** Parallel Assignment

a, b = b, a

で値の入れ替えができる。

配列の分解ができる。

a = [1, 2, 3, 4]
b, c = a
b -> 1
c -> 2

ここらへん、パターンマッチ的。
構造ももてる。

b, (c, d), e = 1, [2,3], 4
b, (c, d), e = 1, [2,3], 4


** Other Forms of Assignment

a += 2

というのは、def +(other)で定義されるmethodとな。
これは、

a + 2

としても使える。+=とできるのはどういう仕組みだんだろ?


* Condtional Execution

** Boolean Expressions

nil と false 以外はtrue。0もtrue。

** The Value of Logical Expressions

if と unless も値を返す。


* Case Expressions

caseも値を返す。


* Loops

特になし。


* Variable Scope, Loops, and Blocks

while, untilとforはスコープをつくらない。

iteratorのスコープは奇妙。

x = nil
y = nil
[1,2.3].each do |x|
y = x + 1
end
[x,y] -> [3,4]

だそうな。

0 件のコメント: