프로그래밍/Ruby 22

Ruby 문법 배우기

Ruby를 공부해보자 Ruby 기초 Ruby언어는 객체지향을 완벽하게 지원하는 언어이자 Meta Programming을 지원하는 언어이다. 그리고 동적타이핑을 사용하며, 루비의 자료형 검사는 실행시간에 수행된다는 특징을 가진다. 어떤 코드를 실행하기 전까지는 형 검사를 수행하지 않는다. 변수 x=4 p false.class #ruby에서는 거의 대부분이 객체로 처리됨 puts 'This is Ruby' unless x == 4 puts 'This is Ruby' if x == 4 루비는 인터프리터 언어이기에 ‘그냥’ 할당하면 된다. Type은 알아서 매겨준다. 출력 puts 'hell, world' language= 'ruby' puts "hello, #{language}" '따옴표의 경우 문자열 그대로..

Block vs Closure 차이

코드 블록과 클로저의 차이? 막연히 생각하면 비슷하게 생각 할 수도 있다. 루비 클로저 블록/procs/lambda 차이점 블록과 차이점 클로저개념 - 루비 무단 수정 및 배포는 금지합니다. 모든 내용은 본 블로그 운영자가 정리한 내용입니다. 참조한 정보에 대해서는 출처를 남기고 있습니다. 다양한 곳에서 참조한 경우 출처 누락이 있을 수 있습니다. (말해주시면 수정하도록 하겠습니다.) 틀린 내용 / 오류가 포함된 내용은 댓글로 남겨주세요. choiseungho0822@gmail.com 보내주셔도 됩니다. Seungdols Wiki 운영중입니다.

Ruby에서 Module 사용하기

Ruby 언어에 경우에는 Python 보다 Module 이용하기가 좀 더 어렵습니다. 물론 , 그렇게 어렵지는 않습니다. Module은 쉽게 말해 "같은 기능을 모아 둔 것"을 말한다고 생각하시면 편합니다. Python과는 다르게 Ruby의 경우 Module이라는 키워드를 제공합니다. 물론 해당 Module이 작성 된 파일을 왼쪽 화면처럼 사용하고자 하려면, require_relative '파일명'을 적어주셔야 합니다. require도 사용합니다. 추가적으로 Ruby언어에서 Module내에 존재하는 클래스에 접근하려면, :: 키워드를 사용해야 합니다.그리고 객체로 생성하면 됩니다. 쉽죠? 생활코딩 자료입니다.

Ruby class의 멤버에 관한 이야기 2

루비 클래스 멤버 이야기 2 시작합니다.출처:생활코딩 이번에 설명하는 것은 클래스 변수라는 것입니다. 사실 위 코드는 객체가 생성 되면, count 변수라는 녀석이 점점 증가 합니다. 제가 3개의 객체를 생성 했으므로 총 3 이라는 숫자가 count 변수에 속하게 됩니다. 그런데 어떻게 변수가 객체 생성 전에 있는 걸까요 ? 그건 @@ 기호로 정의 되어 클래스 변수이기 때문이죠. 객체 생성 이전에 count 변수는 미리 로드 됩니다. 자바, C 기타 언어들에서 지원하는 static과 같습니다. 다른 언어를 해보셨다면, 금방 아실거라 생각합니다. 그리고 지난 번에 배웠던 클래스 메소드가 있네요 ? ^^ get 메소드형태인데, 루비 언어는 자체적으로 모든 변수(멤버변수, 클래스 변수)는 private 성질을..

Ruby class의 멤버에 관한 이야기 1

오늘 알아 볼 것은 루비 언어에서 클래스 멤버에 관해서 이야기를 하려고 합니다.출처:생활코딩 클래스는 Cs로 정의 되어 있습니다. 그리고 메소드를 살펴보면 좀 특이 합니다. 4라인에 Cs. 라는 클래스 명에 . (dot)이 찍혀있는데 그 뒤로 메소드 명이 붙네요 ? 그런데 7번라인은 일반적인 메소드네요 ? 4라인과 같은 것을 ...바로 클래스 메소드라고 합니다. 이름은 중요하지 않고.. 14행부터 보시면 클래스 사용하는 것을 보시면 더 이해가 쉽습니다. 15번 행은 좀 특이 합니다. 왜냐면 객체로 메소드를 호출하는게 아니라 Cs 클래스명으로 메소드를 호출하는 거죠. 즉, 클래스가 생성된 객체가 아니여도 그 자체로도 Call이 가능합니다. 클래스에 속했기 때문에 클래스 메소드라고 합니다. ( 그에 반해 i..

Ruby 에서 Block 표현식 사용 이야기

-Ruby Doc http://ruby-doc.org/core-2.2.0/Integer.html#method-i-upto http://ruby-doc.org/core-2.2.0/Integer.html#method-i-times ruby에서 integer class의 경우 메소드를 지원합니다. 그 중 하나가 times라는 메소드입니다만, 하는 일은 반복횟수.times { 내용 }의 형식으로 작성하게 되면, 반복을 명시한 반복 횟수만큼 실행합니다. 그 밑의 upto의 경우는 좀 더 이해하기 까다롭습니다. 무슨 의미냐 하면, 기준 숫자.upto(목표) { 내용 }의 형식으로 쓰면 기준 숫자에서 목표까지 반복하게 됩니다. 몇 번 반복 하라고 시키는 것이 아니라 이 숫자가 5까지 되도록 반복하라고 하는 말과 같습..

Ruby 언어의 생략 이야기

1~3라인에 있는 함수는 전형적인 함수의 구조 입니다. 그러나 7~9라인에 있는 함수는 약간 다릅니다. 함수명 뒤에 괄호가 생략되어 있습니다. 그러나 그래도 정상적으로 실행이 됩니다. 12~14라인의 경우는 전형적인 인자를 넘겨 받는 함수 구조입니다. 그러나 18~22라인의 함수는 다릅니다. 인자를 받지만 괄호가 생략되어 있죠. 그리고 24~28라인에 걸친 함수는 return이라는 지시어 조차 없습니다. 그럼에도 불구하고 실행이 잘 되죠. 루비에서는 이러한 함수의 괄호 생략이 가능합니다. 간결성을 높이는 것이죠. 간결성을 높이 되 코드의 가독성을 조금 떨어지게 만들 수는 있죠. 그러나 명확하므로 가독성이 떨어진다고는 말하기 어렵습니다.

Ruby에서 상속 이야기

class1이 가진 것은 method1 뿐이네요 ? 하지만 우리가 파이썬에서 배웠듯이 유사합니다. 2015/07/24 - [배우고 싶은 프로그래밍 언어/Python] - python 에서 상속 이야기 결국, 10line의 출력은 m1이 출력 되겠네요 ? ^^ 바로 상속을 들어 가자면, 루비 언어에서는 class 클래스 이름 < 부모 클래스 이름 이러한 구조를 가집니다. 상속 : 무언가를 받는다. 즉, 나에게 주는 클래스는 '부모' 혹은 'super'라고 합니다. * C#의 경우는 뭐..따로 지칭하는 말이 있었던 것 같습니다. 사실 상속은 그냥 쉽게 아! 저 Class1이 가진 코드를 Class3가 상속 받는 구나. ( 돈 받는 구나 ! ) 요렇게 쉽게 이해하는 게 좋을 것 같습니다. 코드를 받는 다는 것..

루비에서 객체지향 이야기 ( 캡슐화 )

루비의 경우에는 클래스 작성시 initialize() 메소드가 무조건 추가 해야 합니다. 생성자라고 하기도 하는 녀석?입니다. 클래스를 객체로 만드는 것을 "인스턴스화"라고 하며, 인스턴스 화의 결과물은 "객체"입니다. 객체가 생성 되기 위해 루비에서는 initialize() 함수가 필요로 합니다. @표시는 클래스에 속한 변수라는 의미로 "인스턴스 변수"라고 말합니다. p는 출력 메소드입니다.p() = p는 동일 합니다. c1.value라는 것은 c1의 인스턴스 변수 값을 반환하라~는 말과 같은데, 루비에서는 클래스의 인스턴스 변수 접근에 직접적인 접근을 허용하지 않습니다.그래서 필요로 한 방법이 get/set 함수를 통한 접근이 있습니다.get/set 함수를 이용하면 캡슐화를 보장 하는 기능이 있습니다..

Rails 프로젝트시 유용한 페이지.

Ruby의 패키지 순위 확인 https://www.ruby-toolbox.com/ 이 URL을 접속하면 rails에서 사용하는 패키지, Gem의 순위를 확인 할 수 있다. http://bootswatch.com/ 이 곳에서는 부트스트랩과 유사한 템플릿을 사용 할 수 있다. 일일히 와이어프레임대로 구성하기 귀찮다면 ? 혹은 개인 프로젝트라면 이 곳의 템플릿을 사용하는 것도 좋을 듯하다.