# ruby console
> irb
# ruby info
> ri Array.map
루비는 모든 타입이 객체다. 그러므로 primative 가 없다.
> 100.class
Integer (ruby 버전 < 2.4 는 Fixnum)
> 100.next
101
> 100.0.class
Float
> "hello" + " " + "world"
"hello world"
> "hello" << " " << "world"
"hello world"
> "a" * 3
"aaa"
"" 와 '' 의 차이. 특별한 문자(\t, \n) 또는 interpolation(#{})은 "" 안에서만 유효하다.
> puts "\n"
# new line print
> puts '\n'
\n
> array = [1, 2, 3]
> array.class
Array
> array[-1]
3
자주 쓰이는 유용한 메소드. 메소드명 뒤에 !를 붙이면 원본을 바꿈.
# 원본을 바꾸려면 !를 붙여야하는 메소드
> array.length
> array.reverse
> array.shuffle
> array.uniq
> array.compact
> array.flatten
> array.include?(2)
# 여기서부턴 !없이도 원본을 바꾸는 메소드
> array.delete_at(pos)
> array.delete(element)
> array.join(",")
> array.push
> array.pop
> array.shift
> array.unshif
# 반복문
> array.each {|e| ...}
> array.map {|e| ...}
> array.map.with_index {|x, i| ...}
연산자
> [1, 2, 3] + [3, 4, 5]
[1, 2, 3, 3, 4, 5]
> [1, 2, 3] - [2]
[1, 3]
Hash 를 작성하는 3가지 방법
> {'a' => 21, 'b' => 42}.class
Hash
> {:a => 21, :b => 42}.class
Hash
> {a: 21, b: 42}.class
Hash
> true.class
TrueClass
> false.class
FalseClass
루비 convention, 메소드 중 ? 로 끝나는 메소드는 Boolean 을 리턴한다.
# inclusive range
> (1..5).class
# exclusive range
> (1...5).class
# 문자도 사용가능
> alpha = "a".."m"
# 전개연산자 *
> array = [*alpha]
["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m"]
변수의 첫 문자가 대문자면 Constant 가 된다. 그러나 convention 상 보통 모두 대문자로 표기한다.
> MY_CONSTANT = 1
> MY_CONSTANT = 2
warning: previous definition of MY_CONSTANT was here
> MY_CONSTANT
2
> nil.class
NilClass
> nil == false
false
> product = nil
> product.nil?
true