要点だけ書いていく。
--
値を返してしかべき、ものは値を返す。これが信頼ということか。
* 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 件のコメント:
コメントを投稿