# Array & Hash

### Array

```ruby
array1=[1,2,3]
array2=[true,2,"a",[1,2,3,4]]
```

배열에는 다양한 형태의 데이터 타입(boolean, number, string, array)을 같이 쓸 수 있다.

#### - 배열의 접근방법

index를 통해서 접근 할 수 있다! 배열의 index는 **0**부터 시작해 **배열의 크기-1** 까지가 범위이다.

> `arr=[1,2,3,4,5]`
>
> \| 1 | 2 | 3 | 4 | 5 | |---|---|---|---|---| |arr\[0]| arr\[1] | arr\[2] | arr\[3] | arr\[4] |

```ruby
arr = [1,"a",3,"b",true]
#=> [1, "a", 3, "b", true]
arr
#=> [1, "a", 3, "b", true]
arr[0]
#=> 1
arr[4]
#=> true
```

***

### Hashes

: a collection of key-value pairs

#### hash 생성방법

```ruby
hash = {
  key1 => value1,
  key2 => value2,
  key3 => value3
}
```

`=>`hash rocket를 이용해서 key를 지정해준다.

```ruby
my_hash = Hash.new
my_hash["key"] = "value"

# Hash는 반드시 H가 대문자여야한다.

# default value 지정
h=Hash.new(“default value”)
```

**hash value에 접근하는 방법**

```ruby
hash = "key"
```

#### Symbol(:)

`"string" == :string # false`

* aren’t strings
* there’s only one copy of any particular symbol at a given time
* 주로 hash의 키로 많이 사용된다.

```ruby
sounds = {
  :cat => "meow",
  :dog => "woof",
  :computer => 10010110,
}
```

* 만들어지면 바꿀 수 없다.
* Only one copy of any symbol exists at a given time, so they save memory;
* Symbol-as-keys are faster than strings-as-keys because of the above two reasons.

#### hash rocket(=>)에서 문법이 바뀜

```ruby
new_hash = {
  key1: value1,
  key2: value2,
  key3: value3
}
```

***
