Ruby 静态成员
在编程中,静态关键字主要用于内存管理。 static 关键字用于在该类的对象之间共享该类的相同方法或变量。
Ruby 中有一个类的各种成员。一旦在 Ruby 中创建了一个对象,该对象的方法和变量就在该类的对象中。方法可以是公共的、私有的或受保护的,但 Ruby 中没有静态方法或变量的概念。 Ruby 没有 static 关键字来表示特定方法属于类级别。然而,静态变量可以使用类变量在 ruby 中实现,静态方法可以在 ruby 中使用该类的方法之一中的类变量来实现。
在 Ruby 中,static 关键字有两种实现:
- 静态变量
- 静态方法
静态变量:一个类可以具有类的所有实例共有的变量。这样的变量称为静态变量。静态变量在 ruby 中使用类变量实现。当一个变量被声明为静态时,它的空间在程序的生命周期内被分配。类变量的名称总是以@@ 符号开头。
例子 :
# Ruby program to demonstrate Static Variable
class Geeks
# class variable
@@geek_count = 0
def initialize
@@geek_count += 1
puts "Number of Geeks = #{@@geek_count}"
end
end
# creating objects of class Geeks
g1 = Geeks.new
g2 = Geeks.new
g3 = Geeks.new
g4 = Geeks.new
输出:
Number of Geeks = 1
Number of Geeks = 2
Number of Geeks = 3
Number of Geeks = 4
在上面的程序中,Geeks 类有一个类变量 geek_count。这个 geek_count 变量可以在 Geeks 类的所有对象之间共享。静态变量由对象共享
静态方法:一个类可以有一个类的所有实例通用的方法。这样的方法称为静态方法。静态方法可以在 ruby 中使用该类方法中的类变量来实现。
例子 :
# Ruby program to demonstrate Static Method
class Geeks
#class method
@@geek_count = 0
# defining instance method
def incrementGeek
@@geek_count += 1
end
# defining class method
def self.getCount
return @@geek_count
end
end
# creating objects of class Geeks
g1 = Geeks.new
# calling instance method
g1.incrementGeek()
g2 = Geeks.new
# calling instance method
g2.incrementGeek()
g3 = Geeks.new
# calling instance method
g3.incrementGeek()
g4 = Geeks.new
# calling instance method
g4.incrementGeek()
# calling class method
puts "Total Number of Geeks = #{Geeks.getCount()}"
输出:
Total Number of Geeks = 4
在上述程序中,incrementGeek() 方法是 Geeks 类的静态方法,可以在 Geeks 类的所有对象之间共享。静态成员函数只允许访问静态数据成员或其他静态成员函数,不能访问非静态数据成员或成员函数。