10

私はまだperlを学んでいます。

サブへの参照を渡す方が簡単なので、直接アクセスするよりもハッシュへの参照の方が「自然」に感じます (リストの代わりに 1 つの変数を渡すことができます)。通常、私は直接アクセスする方法よりもこの方法を好み%hashesます。

問題は、どこで (どのような状況で) 単純な %hash を使用した方がよいかということです。

$hash{key} = $value;

それ以外の

$href->{key} = $value

ここに速度、または使用することを好むその他の「もの」は%hashesあり$hashrefs?ますか? それとも、純粋な個人的な好みと TIMTOWTDI だけの問題ですか? いくつかの例、いつ使用するのが良い%hashですか?

4

3 に答える 3

9

Perl や C++ などのプログラミング言語は長い道のりを歩み、多くの歴史的な荷物を蓄積してきましたが、人々は通常、非歴史的な同期的な公開からそれらを学びます。したがって、彼らは、なぜ TIMTOWDI と WTF がこれらすべての選択を行うのか、何が優れており、何が優先されるべきなのか疑問に思っています。

したがって、バージョン 5 より前の Perl には参照がありませんでした。値型しかありませんでした。リファレンスは Perl 4 へのアドオンであり、より多くのものを書くことができます。もちろん、下位互換性を維持するために、値の型を保持する必要がありました。また、簡単にするために、多くの場合、参照の間接化は必要ないためです。

あなたの質問に答えるには:

Perl ハッシュ リストの速度について考えて時間を無駄にしないでください。彼らは速いです。それらはメモリアクセスです。データベース、ファイルシステム、またはネットへのアクセス。これは、プログラムが通常時間を費やす場所です。

理論的には、逆参照操作にかかる時間はごくわずかであるため、問題にならないはずです。

興味がある場合は、ベンチマーク. 目に見える違いからあまり多くの結論を導き出さないでください。別のリリースでは状況が異なる可能性があります。

したがって、値の型よりも参照を優先したり、その逆を行ったりする速度の理由はありません。

他に理由はありますか?スタイルとテイストの問題だと思います。個人的には、->アクセサーなしの構文を好みます。

于 2013-07-01T22:46:22.837 に答える