В Ruby, @@
до того, как переменная означает, что это переменная класса, вам нужно только одно значение @
перед переменной, чтобы создать переменную экземпляра. Когда вы делаете Result.new(..)
, вы создаете экземпляр класса Result
.
Вам не нужно создавать значения по умолчанию, как это:
@@min = 0
@@max = 0
Вы можете сделать это в методе initialize
def initialize(min = 0, max = 0)
Это будет инициализировать min
и max
равным нулю нет значения .
Итак, ваш метод initialize
должен понравиться примерно
def initialize(min=0, max=0)
@min = min
@max = max
end
Теперь, если вы хотите быть в состоянии назвать .min
или .max
методов экземпляра класса, вы должны создать эти методы (так называемые сеттер и добытчик)
def min # getter method
@min
end
def min=(val) # setter method
@min = val
end
Теперь вы может это сделать:
result.min #=> 1
result.min = 5 #=> 5
рубин имеет ярлыки для этих сеттеров и добытчиками:
attr_accessor
: создает методы сеттера и геттера.
attr_reader
: создать метод геттера.
attr_writer
: создать метод сеттера.
Чтобы использовать те, вам просто нужно сделать attr_accessor :min
, это создаст оба метода для min
, так что вы можете позвонить и установить минимальные значения непосредственно через объект экземпляра.
Теперь вы код должен выглядеть следующим образом
class Result
attr_accessor :min, :max
def initialize(min=0, max=0)
@min = min
@max = max
end
end
result = Result.new(1, 10)
result.max #=> 10
Если по какой-то причине вам действительно нужны все экземпляры 'Result' для совместного использования одного и того же значения, посмотрите на' cattr_accessor' - но это будет означать, что инициализация второго результата заменит значение, которое вы установили в первом! – gmcnaughton
, так что все, что мне нужно, это attr_accessor, он работает мужчинам спасибо – Beginner