Ruby -我可以将此逻辑移到全局变量吗?[关闭]

piztneat  于 2023-06-05  发布在  Ruby
关注(0)|答案(2)|浏览(424)

已关闭,此问题需要details or clarity。目前不接受答复。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。

8年前关闭。
Improve this question
在一个示例中,在一个方法中,我循环遍历一个列表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
f2uvfpb9

f2uvfpb91#

如何使用方法:

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

全局变量在很大程度上是不受欢迎的,所以试着找到一个测试有意义的上下文。

flvtvl50

flvtvl502#

尝试创建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

相关问题