루비 변수
변수는 모든 프로그램에서 사용할 수 있는 모든 데이터를 보유하는 저장 위치입니다.
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
참고:
Ruby에서는 변수나 상수 앞에 # 문자를 배치하여 모든 변수나 상수의 값에 액세스할 수 있습니다.全局变量在 Class1 中输出为 10 全局变量在 Class2 中输出为 10Ruby 인스턴스 변수
인스턴스 변수는 @로 시작합니다. 초기화되지 않은 인스턴스 변수의 값은
이며, -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, KhandalaRuby 클래스 변수 클래스 변수는 @@로 시작하며 메서드 정의에 사용되기 전에 초기화되어야 합니다.
초기화되지 않은 클래스 변수를 참조하면 오류가 발생합니다. 클래스 변수는 해당 변수가 정의된 클래스나 모듈의 하위 클래스나 하위 모듈 간에 공유될 수 있습니다.
-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: 2Ruby 지역 변수지역 변수는 소문자 또는 밑줄 _로 시작합니다. 지역 변수의 범위는 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__: 소스 파일의 현재 줄 번호입니다.