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