English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Ruby 변수

변수는 어떤 프로그램에서도 사용할 수 있는 모든 데이터를 저장할 수 있는 저장 위치입니다.

Ruby는 다섯 가지 유형의 변수를 지원합니다.

  • 일반적으로 소문자, 언더스코어로 시작하는 것: 변수(Variable)

  • $으로 시작하는 것: 전역 변수(Global variable)

  • @으로 시작하는 것: 예제 변수(Instance variable)

  • @@으로 시작하는 것: 클래스 변수(Class variable) 클래스 변수는 전체 상속 링크에서 공유됩니다

  • 대문자로 시작하는 것: 상수(Constant)

이전 장에서는 이러한 변수에 대해 약간 알게 되었습니다. 이 장에서는 이러한 다섯 가지 유형의 변수를 자세히 설명하겠습니다.

Ruby 전역 변수

전역 변수는 $으로 시작합니다. 미정의된 전역 변수의 값은 nil사용 중 -w 옵션 후에 경고가 발생합니다.

전역 변수에 값을 할당하면 전역 상태가 변경되므로 전역 변수 사용을 권장하지 않습니다.

아래 예제는 전역 변수의 사용법을 보여줍니다.

온라인 예제

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
 
$global_variable = 10
class Class1
  def print_global
      puts "전역 변수가 Class1 에서 출력됩니다. #$global_variable"
  end
end
class Class2
  def print_global
      puts "전역 변수가 Class2 에서 출력됩니다. #$global_variable"
  end
end
 
class1obj = Class1.new
class1obj.print_global
class2obj = Class2.new
class2obj.print_global

여기서 $global_variable는 전역 변수입니다. 이는 다음과 같은 결과를 생성합니다:

주의:Ruby에서는 변수나 상수 앞에 # 문자를 두고 모든 변수나 상수의 값을 접근할 수 있습니다.

Class 내에서 전역 변수가 있습니다.1 에서 출력됩니다. 10
Class 내에서 전역 변수가 있습니다.2 에서 출력됩니다. 10

Ruby 예제 변수

예제 변수는 @으로 시작합니다. 미정의된 예제 변수의 값은 nil사용 중 -w 옵션 후에 경고가 발생합니다.

아래 예제는 예제 변수의 사용법을 보여줍니다.

온라인 예제

#!/usr/bin/ruby
 
class Customer
   def initialize(id, name, addr)
      @cust_id=id
      @cust_name=name
      @cust_addr=addr
   end
   def display_details()
      puts "고객 ID @cust_id"
      puts "고객 이름 @cust_name"
      puts "고객 주소 @cust_addr"
    end
end
 
# 객체 생성
cust1=Customer.new("1"John", "Wisdom Apartments, Ludhiya")
cust2=Customer.new("2"Poul", "New Empire road, Khandala")
 
# 메서드 호출
cust1.display_details()
cust2.display_details()

여기서 @cust_id, @cust_name, @cust_addr는 예제 변수입니다. 이는 다음과 같은 결과를 생성합니다:

Customer id 1
Customer name John
Customer address Wisdom Apartments, Ludhiya
Customer id 2
Customer name Poul
Customer address New Empire road, Khandala

Ruby 클래스 변수

클래스 변수는 @@으로 시작해야 하며, 메서드 정의에서 사용하기 전에 초기화해야 합니다.

미정의된 클래스 변수를 참조하면 오류가 발생합니다. 클래스 변수는 정의한 클래스나 모듈의 서브 클래스나 서브 모듈에서 공유 사용할 수 있습니다.

사용 중 -w 옵션 후에 클래스 변수를 오버로드하면 경고가 발생합니다.

아래의 예제는 클래스 변수의 사용을 보여줍니다.

온라인 예제

#!/usr/bin/ruby
 
class Customer
   @@no_of_customers=0
   def initialize(id, name, addr)
      @cust_id=id
      @cust_name=name
      @cust_addr=addr
   end
   def display_details()
      puts "고객 ID @cust_id"
      puts "고객 이름 @cust_name"
      puts "고객 주소 @cust_addr"
    end
    def total_no_of_customers()
       @@no_of_customers += 1
       puts "고객 수 총 합: #@@no_of_customers"
    end
end
 
# 객체 생성
cust1=Customer.new("1"John", "Wisdom Apartments, Ludhiya")
cust2=Customer.new("2"Poul", "New Empire road, Khandala")
 
# 메서드 호출
cust1.total_no_of_customers()
cust2.total_no_of_customers()

여기서 @@no_of_customers는 클래스 변수입니다. 이는 다음과 같은 결과를 생성합니다:

고객 수 총 합: 1
고객 수 총 합: 2

Ruby 전역 변수

전역 변수는 소문자 또는 언더스코어 '_'로 시작합니다. 전역 변수의 범위는 class, module, def 또는 do에서 해당 끝에 이르거나 왼쪽 대括호 '{}'에서 오른쪽 대括호 '{}'까지입니다.

초기화되지 않은 전역 변수를 호출하면 파라미터가 없는 메서드 호출로 해석됩니다.

초기화되지 않은 전역 변수에 값을 할당하면 변수 선언으로 간주됩니다. 변수는 현재 도메인이 끝날 때까지 존재합니다. 전역 변수의 생명주기는 Ruby 파싱 프로그램에서 결정됩니다.

위의 예제에서는 전역 변수는 id, name, addr입니다.

Ruby 상수

상수는 대문자로 시작합니다. 클래스나 모듈 내에서 정의된 상수는 클래스나 모듈 내에서 접근할 수 있으며, 클래스나 모듈 외에서 정의된 상수는 전역으로 접근할 수 있습니다.

상수는 메서드 내에서 정의할 수 없습니다. 초기화되지 않은 상수를 참조하면 오류가 발생합니다. 초기화된 상수에 값을 할당하면 경고가 발생합니다.

온라인 예제

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
 
class Example
   VAR1 = 100
   VAR2 = 200
   def show
       puts "첫 번째 상수의 값은 #{VAR1"
       puts "두 번째 상수의 값은 #{VAR2"
   end
end
 
# 객체 생성
object=Example.new()
object.show

이곳에서, VAR1 와 VAR2 상수입니다. 이는 다음과 같은 결과를 산출합니다:

첫 번째 상수의 값은 100
두 번째 상수의 값은 200

Ruby 가상 변수

이들은 특수 변수로서 지역 변수의 외관을 가지지만, 행동은 상수와 같습니다. 이러한 변수에 대해 어떤 값도 할당할 수 없습니다.

  • self: 현재 메서드의 수신자 객체.

  • true: true를 대표하는 값.

  • false: false를 대표하는 값.

  • nil: undefined을 대표하는 값.

  • __FILE__: 현재 소스 파일의 이름.

  • __LINE__: 현재 행이 소스 파일에서의 번호.