Это код, который я использую в классе под названием Game:Использование «Я», подмешать методами и доступными методами
def play
puts "There are #{@players.length} players in #{@title}."
@players.each do |n|
puts n
end
@players.each do |o|
GameTurn.take_turn(o)
puts o
end
end
Он использует строку кода, который ссылается на модуль под названием GameTurn. В GameTurn, у меня есть метод, называемый self.take_turn
:
require_relative "die"
require_relative "Player"
module GameTurn
def self.take_turn(o)
die = Die.new
case die.roll
when 1..2
o.blam
puts "#{o.name} was blammed homie."
when 3..4
puts "#{o.name} was skipped."
else
o.w00t
end
end
end
Я немного запутался, почему мы используем «я», а разницу между доступными методами и подмешать методы в модулях. Я спросил об этом «instance methods of classes vs module methods»
Является ли take_turn
действительно выставленным методом? Даже если мы используем метод take_turn
объекта из класса игрока, этот метод по-прежнему считается модульным методом, который мы используем напрямую? Разве это не считается методом mixin? Мы вводим в метод take_turn
объект из другого класса, так что он не смешивается с другими классами?
Кроме того, я все еще пытаюсь выяснить, когда/почему мы используем термин «я»? Просто странно, что нам нужно определить метод take_turn
в модуле GameTurn, используя термин «я». Кажется, он должен быть определен без «я»?
Возможный дубликат [Почему префикс метода с «self»] (http://stackoverflow.com/questions/16217401/why-prefix-a-method-with-self) – infused
У вас слишком много вопросов. Пожалуйста, уменьшите их до одного или двух, если они тесно связаны. –