본문 바로가기

개발/Ruby13

[Ruby] 생성자(Constructor) 생성자란? 클래스로부터 인스턴스가 생성될 때(클래스가 인스턴스화 될때) 자동으로 실행되도록 약속된 메소드 ex) class User def initialize() 인스턴스가 생성될때 실행되기를 바라는 코드(초기화해야하는 어떤 작업들)가 있을 때 initialize안에 정의해두면 자동으로 실행해줌 형태 class User def initialize(a,b) # 실행될 코드 end ... a = User.new(a,b) # 예를들어 이런 코드가 실행될 때 initialize가 호출된다. 2019. 6. 18.
[Ruby] self란? 현재 또는 기본객체를 가리킨다. 클래스 안에서 쓰면 현재 클래스를 말하고, 메서드 안에서 쓰면 현재의 메서드를 사용하고 있는 객체를 말함. 특히 클래스 메서드를 표현할 때 많이 쓰인다. 형태 def self.find -> 클래스 메서드 / def find -> 인스턴스 메서드 class User def self.find가 있다고 하면 클래스명.메서드명(User.find)로 호출이 가능함. 하지만 self가 없는 인스턴스 메서드는 u = User.new(유저 인스턴스 생성) 후에 u.find가능. 반대로 클래스 함수를 인스턴스 객체에서 호출하려고 하면 NoMethodError남. User.find만 가능. 그렇다면 인스턴스 메소드는 어떨때 사용하는가? 특정 인스턴스에 의존적인 때에 사용. ex) get/s.. 2019. 6. 18.
[Ruby] symbol과 string의 차이점 string은 데이터, symbol은 식별자 irb(main):001:0> :asdf.object_id == :asdf.object_id => true irb(main):002:0> "asdf".object_id == "asdf".object_id => false symbol의 특징 주로 메서드나 인스턴스 변수명을 표현할때 사용됨 hasy key로 사용되기도 함 immutable함 - 값 변경 불가, 덮어쓰기 가능, heap메모리에 생성되고나면 동일한 객체로 재사용 가능 반면 string은 mutable하므로 실제로는 동일한 값이라 해도 실행시점까지 알수가 없고, 메모리공간도 각각 차지함 그러므로 string보다 메모리 효율성/성능 측면에서 유리하다 2019. 6. 18.
call by value vs call by reference 함수를 호출할 때, 두 가지의 방식이 있다. Call by Value(값에 의한 호출) Call by Reference(참조에 의한 호출) C에서는 포인터 때문에 좀 더 중요하게 다뤄지는 것 같다. Ruby에서는 어떤 차이가 있을까? 내 경우, 눈으로 현상을 먼저 확인하는게 이해가 빨랐다. Ruby irb에서 실행한 결과다. # 변수의 값이 숫자일 때 irb(main):002:0> a = 0 => 0 irb(main):003:0> def add(int) irb(main):004:1> int = int + 1 # 들어온 값에 1을 더해주는 함수 irb(main):005:1> end => :add irb(main):006:0> add(a) => 1 irb(main):007:0> a => 0 # a의 값은 변.. 2019. 1. 14.