Ruby - могу ли я переместить эту логику в глобальную переменную?

В случае, в методе, я перебираю список lines и манипулировать каждым line, Тем не менее, есть некоторые lines который я хочу пропустить. Я хотел бы определить, какие lines пропустить с некоторыми глобальными переменными в верхней части экземпляра. Это возможно? Как я могу это сделать?

class Bets

  #stuff

  def make_prediction 
    lines.each do |line|
      next if @league == :nba && line[:bet_type] == :total && line[:period] == :h1
      next if [:total, :spread, :money_line].include?(line[:bet_type]) && line[:period] == :fg
      #do stuff
    end
  end
end

РЕДАКТИРОВАТЬ:

кто-то проголосовал за закрытие этой темы как бесполезной, потому что неясно. Я не уверен, что неясно в этом. Но я сделаю это более ясным, как я хочу, чтобы это выглядело...

class Bets
  #psuedo code, obviously this wont work
  #and i cant think how to make it work
  #or if its even possible
  GLOBAL = true if @league == :nba & line[:bet_type] == :total & line[:period] == :h1 

  #stuff

  def make_prediction 
    lines.each do |line|
      next if GLOBAL #psuedo code
      #do stuff
    end
  end
end

2 ответа

Как насчет использования методов:

class Bets

  def skip?  
    @league == :nba & line[:bet_type] == :total & line[:period] == :h1 
  end
  #stuff

  def make_prediction 
    lines.each do |line|
      next if skip?          
      #do stuff
    end
  end
end

Глобальные переменные в значительной степени осуждаются, поэтому постарайтесь найти контекст, в котором ваш тест имеет смысл.

Попробуйте создать Proc и выполнить его в контексте экземпляра.

GLOBAL = Proc.new {|line| your_code_goes_here}
#...
#...
def make_prediction 
  lines.each do |line|
    next if instance_exec(line,GLOBAL) #psuedo code
    #do stuff
  end
end
Другие вопросы по тегам