2016-12-21 4 views
0

私はこれを見つけた面接の質問を練習していました。私はperldoc -f tieを見ましたが、それを得ることができませんでした。私は約blessを知って私のプログラムで使用しています。

tieは何ですか、どのように関連しており、blessとは違うのですか?簡単な例があれば分かります。

PS:私はPerlの開発者で、日々の生活の中で使っています。私の関心は、インタビューのためではなく、それをperlのblessとtieの違いは何ですか?

+2

このようなインタビューの質問をする場所で働きたいとは思わない。 – simbabque

+0

私はPerlの開発者であり、日々の生活の中でそれを使用しています。ですから私の懸念事項はインタビューではなく、それを知ることです。 –

+1

あなたはhttp://perldoc.perl.org/perltie.htmlも読んでいますか? – simbabque

答えて

3

blessは、オブジェクトを構成するために使用されます。

tieは、インターフェイスに変数を提供するコードを許可します。例えば変数に代入しているように見えるかもしれませんが、実際にはサブを呼び出しています。 などの魔法が主に "巧妙な"インターフェースを提供するために使用されます(例えば、%ENVが環境を変更し、%SIGがシグナルハンドラを設定し、$!errnoperrorなどのミラーを変更します)。また、既存のコードの有用性を拡張するために使用することもできます(たとえば、ファイルハンドルのようなものを作成すると、ファイルハンドルからの入力を受け取るコードを再利用できます)。

2

を知るために、私はおそらく、このようなあなたの面接の質問に答えるでしょう:

タイをして、彼らは変数でカスタム動作を関連付けることで、同様の機能を果たす祝福します。違いはフォーカスの点で - tieは、 '標準'データ構造に新しい動作を追加することについてです。blessは、「新しい」データ構造を作成しようとしています。

したがって、bless edデータ構造の可能性はほとんど無制限ですが、作業しているデータ型の基本的な操作には、tieという制限があります。しかし、tie ed変数は置き換えのドロップとして機能することができます。ファイルやデータベースに「ハッシュ」をtieまで拡張すると、コードリビジョンを必要とせずに同じ方法で機能することができます。

この強みも多くの点で弱点ですが、将来のプログラマーがオブジェクトやメソッド呼び出しに直面したときに、何が起こっているのかを理解するためにクラスを探す必要があることを知っています。束縛されたハッシュ(またはスカラー)が「何か特別な」ことをしていることを認識してください。

したがって、診断のためにスタイルtieを予約しておくことをお勧めします。ハッシュで値が変更されたときにログに記録するのが便利かもしれませんが、予期せぬ方法。

関連する問題