일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Heuristic Watermarks
- apache flink
- Perfect Watermarks
- HDFS
- coroutines
- 불공변
- MapReduce
- flink
- processing time
- 공변
- Generic
- flink watermark
- covariant
- event time
- watermarks
- Coroutine
- kotlin
- contravariant
- Perfect Watermark
- Hadoop
- watermark
- Generics
- lambda
- Stream
- 가변성
- flink watermarks
- ingestion time
- Heuristic Watermark
- java
- Today
- Total
mm Home
Ruby 기본 문법 본문
사내에서 상당히 많은 레거시 프로젝트가 루비로 개발되어 있다.
최근에는 레거시 프로젝트 이외에는 잘 안쓰이는것 같고, 한창 국내에서 루비가 떠오를때 많이 사용되었던것 같다.
루비가 간편하고 빠르게 개발할 수 있다는 건 익히 들었지만 실제로 접하기 전까지는 추상적으로만 알고 있었다.
루비온레일즈(RoR)로 짜여진 프로젝트를 맡게 되어서 공부를 하게 되었는데 재미있었다.
확실히 철저한 관습에 따른 편리성이 자바&스프링 개발자인 나에게 큰 매력으로 다가왔다.
음.. 그냥 서론은 그만하고 그때 공부했던 내용을 올린다 ㅎㅎ
Ruby 철학
Ruby 뜻 : 마츠모토 유키히로 지인의 탄생석
스트레스가 없는 쉬운 프로그래밍!을 위하여
스크립트 언어.
- 마츠모토 유키히로. Ruby doc 머릿말에서.. (http://ruby-doc.com/docs/ProgrammingRuby/)
- 변수
String
' 와 " 사용 가능
" : #{변수명} 을 통해 변수값을 바로 집어넣을 수 있다 (interpolation)- Interger (Float)
- 정수와 실수형 존재
Array
Hash
Symbol
immutable 문자열
- Scope
- 반복문
loop do (무한루프)
for (2가지 방법)
times 메소드 이용 (정수는 기본적으로 times 메소드 지원)
- 조건문
if & unless
if true일 경우 내부 구문 실행, unless false일 경우 내부 구문 실행case
break 필요 없음
- Method
return을 이용하지 않은 경우에는 마지막 수행된 구문 반환
Proc (익명 함수)
Block
do - end 사이의 코드를 의미함. ({} 동일)
parameter 앞에 &를 붙이면 method block으로 인식하게 한다.
Proc 은 사용하다보면 거의 일회성으로 사용. (일반적으로 익명함수에 대한 재사용성은 적다)
Proc 키워드가 너무 자주 보인다. (.call() 호출 포함)
Proc 에 대한 구분이 필요하다.
Proc이 파라미터로 들어왔다고 가정하고 파라미터를 생략한다. (yield)Class
class 키워드로 시작, end 로 끝
initialize 메소드는 자바에서 생성자와 비슷객체 생성
new 메소드는 객체를 메모리 공간에 할당하고, 매개변수를 이용해 객체의 initialize 메소드를 호출
상속
< 기호를 통해 상속을 표현 (extends 와 동일)- 접근 제어
private, protected, public
기본은 public (예외 : initialize 는 항상 private)
module
클래스, 메소드, 상수를 묶은 기능 (class 와 비슷)
모듈을 통해 객체 생성은 불가능.
mixin을 통해 다중 상속이 가능
재사용성 가능한 요소를 묶는데 유용 (1. 재사용하는 코드인데, 클래스로 구분짓기가 싫을 때가 있다 : 클래스는 객체를 생성해서 메서드 호출하던지, static 메서드를 호출해야 하니까.. 2. 다중 상속이 가능 )
require 를 통해 모듈을 불러들어와 사용할 수 있다.
include, extend를 통해 클래스, 객체 내에서 mixin 하여 사용하는 방법이 있다.
*module을 사용하는 키워드 include, exclude 차이
include : 슈퍼클래스의 메소드를, 인스턴스 메소드로 상속 받는다.
extend : 슈퍼클래스의 메소드를, 클래스 메소드로 상속 받는다. (static)
객체를 생성할때, include를 사용한 모듈에 대해서는 객체 생성 시점에 콜백으로 호출되는 self.included 메소드로 인하여 instance method로 사용할 수 있게 된다.예외처리
begin - rescue (begin으로 시작하면 예외가 발생할때, rescue 코드쪽으로 넘어가게 된다)
참고했던 페이지들이 좀 있었는데... 써놓질 않아가지고.. 담에는 참고했던 페이지를 잘 정리해야겠다