0

現在Watcher、Ruby でクラスを開発しています。これは、とりわけ、トグル信号の期間を見つけることができます。これは一般的にかなり単純ですが、私が直面している問題は、明らかに Ruby がすべてのパラメーターを値で渡すことです。オンラインで調査しているときに、「値渡し」と「参照渡し」が実際に何であるかについて多くの異なる議論を見つけましたが、実際の「方法」はありません。C/C++ のバックグラウンドを持つ私にとって、これはプログラミング/スクリプト言語の不可欠な部分です。

私が書いたクラスの関連部分を以下に示します。メソッド Watcher::watchTogling() は、私が問題を抱えているものです。パラメータとして、aVariable期間を測定している値への参照にする必要があります。

class Watcher
  @done
  @timePeriod

  def reset()
    @done = false;
    @timePeriod = nil;
  end

  def watchToggling(aVariable, aTimeout=nil)
    oldState = aVariable;
    oldTime = 0;
    newTime = 0;

    timeout(aTimeout)do
      while(!@done)
        newState = aVariable;
        if(newState != oldState)
          if(newState == 1)
            # rising edge
            if(oldTime != 0)
              # there was already a rising edge before,
              # so we can calculate the period
              newTime = Time.now();
              @timePeriod = newTime - oldTime;
              @done = true;
            else
              # if there was no previous rising edge,
              # set the time of this one
              oldTime = Time.now();
            end
          end
          oldState = newState;
        end
      end
    end

    puts("Watcher: done.")
  end

  def isDone()
    return @done;
  end

  def getTimePeriod()
    return @timePeriod;
  end
end

Rubyで参照渡しする方法はありますか? そうでない場合、この問題を解決する代替手段はありますか?

4

1 に答える 1