@@Değişken Ruby ne demek?
Ruby değişken işaretler at çift (@@
) ile öncesinde nelerdir? Bir değişken işareti ile öncesinde benim anlayış bir örnek değişken, PHP: böyle olmasıdır
PHP sürümü
class Person {
public $name;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
Ruby eşdeğer
class Person
def set_name(name)
@name = name
end
def get_name()
@name
end
end
Çift işareti @@
ve nasıl işareti bir tek farklılık gösteriyor mu? ne demek
CEVAP
Bir değişken @
ile önekiörnek değişkenbir @@
bir öneki isesınıf değişkeni. Aşağıdaki örneğe bakın; çıkış puts
satır sonunda: yorum
class Test
@@shared = 1
def value
@@shared
end
def value=(value)
@@shared = value
end
end
class AnotherTest < Test; end
t = Test.new
puts "t.value is #{t.value}" # 1
t.value = 2
puts "t.value is #{t.value}" # 2
x = Test.new
puts "x.value is #{x.value}" # 2
a = AnotherTest.new
puts "a.value is #{a.value}" # 2
a.value = 3
puts "a.value is #{a.value}" # 3
puts "t.value is #{t.value}" # 3
puts "x.value is #{x.value}" # 3
Gördüğünüz gibi bu @@shared
paylaşılan arasındaki sınıflar; ayar değer bir örnek, bir değişiklik değeri tüm diğer örnekleri bu sınıf ve alt sınıflar bile, bir değişken adında @shared
@
, olmaz.
[Güncelleme]
Phrogz yorum bahseder gibi, Ruby ortak bir dil örnek değişkeni ile sınıf düzeyi verileri izlemek içinsınıfın kendisi. Bu aklını karıştıran aldatıcı bir konu olabilir, ve konu ile ilgili additional reading bol, ama Class
Sınıf değiştirme olarak düşün amasadeceçalıştığınız Class
sınıf örneği. Bir örnek:
class Polygon
class << self
attr_accessor :sides
end
end
class Triangle < Polygon
@sides = 3
end
class Rectangle < Polygon
@sides = 4
end
class Square < Rectangle
end
class Hexagon < Polygon
@sides = 6
end
puts "Triangle.sides: #{Triangle.sides.inspect}" # 3
puts "Rectangle.sides: #{Rectangle.sides.inspect}" # 4
puts "Square.sides: #{Square.sides.inspect}" # nil
puts "Hexagon.sides: #{Hexagon.sides.inspect}" # 6
Bu beklediğiniz gibi 100% davranabilir göstermek için Square
nil
çıkışları olan ben dahil; article I linked above konuyla ilgili ayrıntılı bilgi var.
Çoğu veri ile, dmarkow yorum başına ** 22, bir sınıf değişkenleri ile son derece dikkatli olması gerektiğini de unutmayın.
Ruby: %w(dizi) ne demek?...
Bir değişken olup olmadığını kontrol e...
Ruby Gem Mavericks başarısız ve 5.1 - ...
Ruby'de farklı parantez ne demek?...
Bir değişken belirleme aralığı içinde....