본문 바로가기

ruby

ruby 특징

1. String+String 가능. String *int 가능. 다른 건 불가능.

2. to_s to_i to_f ,,,바꾸어준다.

3. 값의 비교는 Java와 반대이다.

  • 루비에서는 ==(일반 비교)가 값의 비교이고 equal?가 id값의 비교이다.

4. reference type 만 있다

  • a = 3을 만들면 Fixnum class에 저장이 되고,
  • 특정 범위가 넘어서면 Bignum class 에 저장이 된다.

5. 클래스 안에 정의되는 변수들은 @ 를 붙여서 만든다.

6. 외부에서 생성자를 통해 만든 변수(인스턴스)를 통해서 클래스 안에 정의된 변수들에는 접근이 불가능하다.

  • private 이 default이다.

7. For I in list or for I in range(1..10)

  • Range를 표현할 때, 점 두 개는 last를 포함하고 점 세 개는 last를 포함하지 않는다.
  • 이러한 표현식보단 (1..10).each { |i| puts i } 라는 특정 함수 실행 후 처리를 블록에 맡기고 람다식을 사용하는 방식을 거의 사용

8. Db Migration

  • db를 변경할 수 있는 편리한 방법.
  • 소스 업데이트 후 rake db:migrate
  • 혹은 rails db:migrate

9. 모델의 properties는 해당하는 db table 에다가 놓는다.

10. Module 안에 있는 class를 생성할 때에는

  • a = module::class.new()
  • 이렇게 모듈 이름::클래스이름.뉴 를 해줘야 한다.

11. mixin(믹스인)

  • 다른 클래스에 있는 method를 사용할 수 있게 해 준다.
  • Include class_name, ,,,(class 안에)만 써주면, 하나의 클래스로 여러 클래스가 정의한 메서드를 사용할 수 있다.

12. .dup

  • 객체의 다른 방을 복사해서 만든다.

13. Array.new {Array.new} 

  • 2차원 배열 만들기.
  • Array.new를 새롭게 만들어서 이 값을 a.dup를 통해서 값을 전달할 것.
  • 그렇게 하나하나 1차원 배열을 넣어서 2차원 배열을 만들 것.
  • list << value
  • list.push(value)

14. 불변 객체 만드는 방법

  • .freeze 사용.

15. 메서드를 제외한 primitive, reference type(list, map, set)의 기본 접근제어는 private이다.

  • 이걸 attr_accessor, attr_reader, attr_writer를 통해 접근할 수 있게 만들어준다.

16. private: 은 맨 위에 적지 말고 private으로 만들고 싶은 메서드들 위에다가 적을 것.

17. A < B 

  • 상속을 받는다면, B가 가지고 있는 모든 def를 A가 사용 가능하다.
  • a = A.new() -> 이때, B가 가지고 있는 모든 def를 a.method로 다 접근 가능.
  • 물론 이때, overriding 은 당연히 가능.

18. Require와 require_relative 차이점

  • https://negabaro.github.io/archive/ruby-module-system-require-etc
  • Require은 ruby load path에 등록된 디렉터리를 기준으로 순서대로 하나하나 다 검색한 후 존재하지 않다면 현재 디렉터리에 있는 파일을 읽어온다.
  • 사용법 require ‘./m1’
  • load path 보는 방법
    • ruby -e ‘puts $LOAD_PATH’
  • Require_relative는 현재 파일 위치를 기준으로 찾아간다.
    • 그래서 프로젝트 폴터 이외의 경로에 있는 파일을 끌어올 때에만 require

19. rib

  • ruby 명령어 입력기

20.  ; 

  • 한 줄에 같이 쓸 때 사용.
  • { |b; c| a = b + 1; c = a + 1; d = c + 1}

21. name.to_s[0..40]

  • 스트링을 자르고 싶을 때 사용.

'ruby' 카테고리의 다른 글

DI(Dependency Injection)  (0) 2021.12.30
instance variable encapsulation  (0) 2021.12.30
상속 vs 믹스인(mixin)  (0) 2021.12.28
블록  (0) 2021.12.26
루비에서 람다식이란  (0) 2021.12.26