본문 바로가기

전체 글

(54)
Argument default argument def aMethod( a=10, b=20, c=100, *d ) return a, b, c, d end def anotherMethod( greeting="Hello", name="friend" ) return "#{greeting}, #{name}" end p( aMethod ) # result : [10, 20, 100, []] p( aMethod( 1,2 ) ) # result : [1, 2, 100, []] p( aMethod( 1,2,3 ) ) # result : [1, 2, 3, []] p( aMethod( 1,2,3,4,6 ) ) # result : [1, 2, 3, [4, 6]] 위와 같은 식으로 디폴트값을 지정할 수 있다. 또한 기존에 선언한 매개변수보다 ..
class method 메소드란 오브젝트에 기능을 제공하는 역할을 합니다. 클래스 메소드 역시 기능을 제공하는 역할을 하며 클래스 그 자체에 대한 기능을 정의합니다. 예를 들어 봅시다. User.find(1) 루비온레일즈를 써보셨다면 익숙한 코드이실겁니다. 액티브레코드의 기능을 통해 유저 테이블에 있는 데이터를 조회하는 코드죠. 저 User모델 역시 클래스입니다. 하지만 User.new를 통해 객체를 생성하지 않은채 클래스명으로 바로 메소드를 호출했죠. 저 때의 find가 바로 클래스 메소드입니다. 이렇듯 클래스 메소드는 객체 생성없이 호출이 가능하며, 각 객체별이 아닌 클래스 전체와 관련된 기능을 정의합니다. 다시 말해, 정의하고자 하는 기능이 각각의 객체에 속하는 것이 아니라면 클래스 메소드로 정의해야 한다는 뜻입니다. 또..
Symbol 뭔지 모르겠지만 뭔가 있어보이니까 그냥 쓰자 루비를 배워본 적 없이 바로 개발에 투입되다보니 항상 '다들 이렇게 쓰니 나도 그냥 쓰자'라는 마인드였습니다 (a.k.a. 노답마인드). 그럼에도 항상 신경쓰이는 놈이 있었는데 바로 symbol입니다. 그냥 생각없이 쓰자니 눈에 너무 많이 띄더군요. 메소드 명이나 해쉬키로 자주 쓰이니 대충 이런 놈이겠지 싶은 감은 있었지만 정작 누군가 물어봤다면 대답을 못할것같았습니다. '상징이야' 라고 대답하기에는 문과인생을 청산한지도 꽤 오래 됐고 아재처럼 보이기도 싫고, 여튼 그랬어요. 이러한 이유로 첫 TIL 주제를 symbol로 정하게 되었습니다. 자 그렇다면, 심볼이란 뭘까요? 심볼이란 변경불가능한(immutable) 상수입니다. 라는 정의를 매번 봐왔습니다. 그때..