言語バインディングとは何ですか?
-
09-06-2019 - |
質問
私の良き友人、ウィキペディア、 あまり良い返事をしてくれませんでした その質問に対して。それで:
- 言語バインディングとは何ですか?
- それらはどのように機能するのでしょうか?
具体的には、言語 Y で記述されたライブラリの言語 X で記述されたコードから関数にアクセスします。
解決
stackoverflow に投稿するための C ライブラリを作成するとします。次に、Python から同じライブラリを使用できるようにします。この場合、ライブラリの Python バインディングを作成します。
SWIG も参照してください。 http://www.swig.org
他のヒント
コード ライブラリのコンテキストでは、バインディングは 2 つのプログラミング言語の間を橋渡しするラッパー ライブラリであり、ある言語用に作成されたライブラリを別の言語でも暗黙的に使用できます。
たとえば、libsvn は Subversion の API であり、C で書かれています。Java コード内から Subversion にアクセスしたい場合は、libsvn-java を使用できます。libsvn-java は、インストールされている libsvn に依存します。これは、libsvn-java が Java プログラミング言語と libsvn の間の単なるブリッジであり、実際の作業を行うために libsvn の関数を呼び出すだけの API を提供するためです。
さて、質問は明確になりました。これはあまり関係がないので、次のことに移動します。 新しい質問
バインディングとは一般に、あるものを別のものにマッピングすることを指します。データソースをプレゼンテーションオブジェクトに変換します。これは通常、データベースまたは同様のソース (XML ファイル、Web サービスなど) からのデータをプレゼンテーション コントロールまたは要素 (HTML のリストやテーブル、デスクトップ ソフトウェアのコンボ ボックスやデータ グリッドと考えてください) にバインドすることを指します。
...その種類の装丁に興味がある場合は、読み続けてください...
通常、プレゼンテーション要素をデータソースにバインドする必要があります。その逆はできません。これには、ある種のマッピングが必要になります。データソースのどのフィールドを出力に表示するか。
いくつかの環境での詳細については、次を参照してください。
- Windows フォームを使用した .Net でのデータ バインディング
- ASP.NETデータバインディング
- Java データ バインディング
- Python データバインディング
- 一般的な XML データ バインディング
Flex (Actionscript 3) の場合。 ソース
データ バインディングは、あるオブジェクトのプロパティの値を別のオブジェクトのプロパティにコピーします。次のオブジェクトのプロパティをバインドできます。Flex コンポーネント、Flex データ モデル、および Flex データ サービス。
データを提供するオブジェクト プロパティは、ソース プロパティと呼ばれます。データを受け取るオブジェクトのプロパティは、宛先プロパティと呼ばれます。
次の例では、TextInput コンポーネントの text プロパティ (ソース プロパティ) を Label コンポーネントの text プロパティ (宛先プロパティ) にバインドし、TextInput コンポーネントに入力されたテキストが Label コンポーネントによって表示されるようにします。
<mx:TextInput id="LNameInput"></mx:TextInput>
...
<mx:Label text="{LNameInput.text}"></mx:Label>
データ バインディングは通常、モデルをユーザー インターフェイス コンポーネントにバインドする簡単な方法です。たとえば、FirstName プロパティを持つクラスがあるとします。flex では、テキストボックスの値を {Object.FirstName} に設定することで、そのプロパティをテキストボックスに簡単にバインドできます。その後、FirstName プロパティが変更されるたびに、そのプロパティの変更を監視するコードを記述する必要がなく、テキスト ボックスが更新されます。
それが役立つことを願っています。
マット