Container
Array의 형태는 '[]'로 만들어준다.
a = [3.14, "pie", 99]
음수의 index의 경우에는 뒤에서부터 세는것이 가능하다.
shift, pop이 모두 가능하다.
Hash의 경우에는 '{}'로 만들어준다.
h = {'cat'=>'cats name', 'dog'=>'dogs name', 'count'=>10}
Block과 Iteritor
yield의 구현 : code block을 실행시켜주는 method.
sorce code에서는 block은 method 호출 바로 뒤에서만 나타나게 된다.
block안의 code는 나타나자마자 실행되지 않는다. 대신 Ruby가 block이 나타날 때의 상태를 기억하고 method로 들어가게 된다.
yield가 실행될 때마다, Block의 코드가 실행된다. : yield의 경우에는 Block의 code를 호출하고, 그 변수를 return 시켜주게 된다.
def fix_up_to(max) i1, i2 = 1, 1 while i1 <= max yield i1 i1, i2 = i2, i1 + i2 end end fix_up_to(1000) { |f| print f, " " }
: 실행순서 i1이 리턴된 후에 f로 들어가게 되어서, print f가 실행된 후에 다시 while 문으로 된다.
Block code의 경우에는 그 안에 있는 변수는 내부에서만 효용있는 변수가 된다.