代码之家  ›  专栏  ›  技术社区  ›  Steven

如何在Ruby/Rails中进行仅发生一次的函数调用

  •  1
  • Steven  · 技术社区  · 14 年前

    我用来支持我的测试套件的gem/plugin调用了一些GNU命令,这些命令会导致windows shell翻转并死亡。我可以用这种方式用旁路重写这些函数:

    def get_rake_output(task)
      if RUBY_PLATFORM.include? 'mingw'
        puts 'Skipped since OS is Windows. Run the test suite on a UNIX-like shell.'
        ''
      else
        `./rake --silent #{task}`
      end
    end
    

    当然,这会在每次调用函数时打印消息。如何最好确保它只显示一次?

    2 回复  |  直到 14 年前
        1
  •  3
  •   Reactormonk    14 年前

    它是 方法 红宝石。 </rant> . 使用类变量,例如 @@warning_said 检查一下那个。阿卡

    puts "Ruby does not like Windows here" unless @@warning_said
    @@warning_said = true
    

    我不太确定你在什么范围内工作,但应该这样做。

        2
  •  4
  •   Jed Schneider    14 年前

    处理这种情况的IDomatic Ruby方法是将其记忆化。

    @@warning_said ||= "warning"