루비 변수


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

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

  • 일반적으로 밑줄로 시작하는 소문자: 변수입니다.

  • $로 시작: 전역 변수. $开头:全局变量(Global variable)。

  • @开头:实例变量(Instance variable)。

  • @@

  • @로 시작: 인스턴스 변수.

@@로 시작: 클래스 변수 클래스 변수는 상속 체인 전체에서 공유됩니다.

대문자로 시작: 상수.

이전 장에서 이러한 변수를 대략적으로 이해했습니다. 이 장에서는 이러한 5가지 유형의 변수를 자세히 설명합니다.

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에서는 변수나 상수 앞에 # 문자를 배치하여 모든 변수나 상수의 값에 액세스할 수 있습니다.

全局变量在 Class1 中输出为 10
全局变量在 Class2 中输出为 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 "Customer id #@cust_id"
      puts "Customer name #@cust_name"
      puts "Customer address #@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 "Customer id #@cust_id"
      puts "Customer name #@cust_name"
      puts "Customer address #@cust_addr"
    end
    def total_no_of_customers()
       @@no_of_customers += 1
       puts "Total number of customers: #@@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는 클래스 변수입니다. 그러면 다음과 같은 결과가 생성됩니다.

Total number of customers: 1
Total number of customers: 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:은 정의되지 않은 값을 나타냅니다.

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

  • __LINE__: 소스 파일의 현재 줄 번호입니다.