質問

読み取られるたびにインクリメントする単純なタイドスカラークラスがある場合は、次のようにすることができます。 ジェネラコディセタグプレ

ただし、カウンター変数を作成するには、tieを使用する必要があります。1つのカウンターを作成してエクスポートできます。しかし、私が本当にやりたいのは、それをOOに見せることです。次のようなnewメソッドを作成できるようです: ジェネラコディセタグプレ

次に、メインスクリプトで、次の手順を実行して2つのカウンターを取得します。 ジェネラコディセタグプレ

ネクタイはコピーに耐えられないため、これは機能しないと思います(ドキュメントのどこかで読んでいます)が、これを行う方法はありませんか?

NB。私はそれがスタイルの問題であることを知っています、しかしそれは目にもっと正しいように見えるでしょう。

役に立ちましたか?

解決

タイマジックは、含まれる値ではなく変数自体に適用されるため、割り当て全体に適用されません。いくつかのオプションがあります:

参照を返す: ジェネラコディセタグプレ

グロブへの割り当て: ジェネラコディセタグプレ

または、変数をコンストラクターに渡すこともできます: ジェネラコディセタグプレ

両方のメソッドで機能するコンストラクターを作成することもできます: ジェネラコディセタグプレ

最後の2つの例では、tie$_[0]が直接渡されます。これは、@_の要素が引数リストのエイリアスであるため、my $counter行にtieを入力したかのように機能するためです。


そして最後に、あなたの例は非常に明確でベストプラクティスに従っていますが、TIMTOWTDIの精神で、クラス全体を次のように書くことができます。 ジェネラコディセタグプレ


最後にもう1つ言及します。質問はタイ変数に関するものですが、オーバーロードを使用してこれを実現することもできます: ジェネラコディセタグプレ

しかし、割り当てによってカウンターをリセットする機能が失われます。 sub set {$_[0][0] = $_[1]}メソッドをCounterに追加できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top