잊지 않겠습니다.

Command Expand

(`)또는 %x로 시작하는 구분자 형식을 이용하면 사용중인 기반 운영체제에 의해 command로 실행된다.

 

조건적 실행

논리 표현식

Ruby에서의 true : nil이 아니고 false가 아니면 모두가 true로 된다. 따라서 숫자 0나 길이가 0인 문자열 역시 true로 해석된다.

defined?, And(&&), Or(||), Not(!)
defined?

정의되지 않을때 nil이 반환되며, 그렇지 않은 경우 매개 변수에 대한 설명을 반환한다.

eql?

수신자와 매개변수가 서로 같은 타잎이며, 같은 값을 갖는 경우 참이 된다.

1==1.0 : true
1.eql?(1.0) : false

equal?

수신자와 매개변수가 같은 객체 ID를 가질 경우 true로 된다.

 

논리 표현식

if, elsif, unless

마치 python과 비슷하게도 사용 가능하고, 문법에서의 자유도가 매우 높은 것을 알 수 있다.
구문 변경자로도 사용 가능하며, 이는 조건문을 일반 구문에 끝에 붙여서 사용가능할 수 있게 해준다.

if song.artist == "Gillespie" : handle = "Dizzy"
elsif song.artist == "Parker" then handle = "Bird"
else handle = "unknown"
end
mon, day, year = $1, $2, $3 if date ~= /(\d\d)-(\d\d)-(\d\d)/
Case

if 구문의 연결 형태와 유사

case..when구문으로의 사용

문자열이나 숫자보다는 Expression에서의 true가 적용될 때 해당

while, until

while 구문과 until구문은 반대로 동작하는 것으로 해당

file = File.Open("ordinal")
while line = file.gets
   puts(line) if line = ~/third/ .. ~ /fifth/
end

 

반복자

: Ruby에서는 for loop구문이 없다. for loop구문보다 더욱더 강력하고 편한 방법으로 수행이 가능하다.

0.upto(9) { |x| print x, " " }
0.step(12, 3) { |x| print x, " " }

: Ruby에서의 for loop는 each method에 응답하는 객체와 같이 사용된다.

 

songlist.each do |song|
    song.play
end

변수의 유효 범위, 반복문, 블록

  1. while, until, for에서는 새로운 변수 범위가 생성되지 않는다.
  2. loop, each에서는 새로운 변수 범위가 생성된다.
  3. {} 형식 변수의 경우에도 역시 새로운 변수 범위로서 생성된다. 
Posted by Y2K
,