現在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で参照渡しする方法はありますか? そうでない場合、この問題を解決する代替手段はありますか?