内部構造とは? わかりやすく解説

内部構造(Tcl オブジェクト)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/08/10 13:51 UTC 版)

Tcl/Tk」の記事における「内部構造(Tcl オブジェクト)」の解説

Tcl パーサーは、スクリプト文字列受け取り、常に処理結果文字列返すように見える。これでは文字列解析文字コードバイナリ値への変換頻繁に行われていることになり、いかにも効率悪く思える。しかし決しそのような単純なものではなく内部では可能な限りバイナリ値を維持している。Tcl スクリプトバイナリ値も扱えるのはこのおかげである。 例え下記のように変数数値与え、その計算結果変数格納するとき、おのおの変数の型は文字列と double二つの型を持つ。文字列として参照されるときは文字列型として振る舞いdouble として参照されるとき(計算式の中などで)は double 型として振る舞うことができる。 set a 100.0 set b 200.0 set c [expr $a * $b] Tcl パーサー内部において変数Tcl オブジェクトとして存在している。Tcl オブジェクトchar *、intdouble共用体持った構造体であり、文字列への変換要求されない限りint 値は int 値のまま、double 値は double 値のまま維持されるスクリプトでは変数の型宣言行えないが、変数への値セットで型が仮定されTcl オブジェクト間のデータ移動無駄な型変換が行われないように配慮されている、ということである。 リスト同様に内部ではリスト型Tcl オブジェクトとして存在している。このような仕組みになっているので、リスト作成する時は list コマンド用いるべきであることが分かるまた、巨大なリスト文字列として全体参照するのも効率悪くするので慎重にすべきである下記の例では変数 listA には文字列として格納されるが、listB には int 値のリストとして格納されるこの後、これらの変数リスト処理コマンドアクセスすると、listA に対して要素分解処理が行われるが、listB に対して不要となる。 set a 100 set b 200 set listA "$a $b" set listB [list $a $b] 前項解説したコマンド登録関数後者(Tcl_CreateObjCommand)は、Tcl パーサーからの引数を、無駄に文字列変換することなくTcl オブジェクトのままで受け取コマンド関数登録するためのものである。 返値も Tcl オブジェクト通じて返すことができる。下記long 値をそのまま返す例である。 /* long値を返す例 */ Tcl_SetLongObj (Tcl_GetObjResult (interp), longVal) ; 返値のみならずTcl オブジェクト不要になったとき自動的に削除される仕組みがある。それは Tcl オブジェクトが持つ「参照カウンタ」による制御である。アプリケーションTcl オブジェクト作成し、それを存続したければ参照カウンタ増加させておき(Tcl_IncrRefCount)、必要なとなったところで減ずる(Tcl_DecrRefCount)ようにする。参照カウンタ減らされて 0 になったときにのみ、そのオブジェクト削除される。つまり、存続廃棄要求自分だけの都合出しておくだけで、削除タイミングコントロールされるという仕組みである(スマートポインタ)。 変数のみならずスクリプト自体Tcl オブジェクトとして存在している。

※この「内部構造(Tcl オブジェクト)」の解説は、「Tcl/Tk」の解説の一部です。
「内部構造(Tcl オブジェクト)」を含む「Tcl/Tk」の記事については、「Tcl/Tk」の概要を参照ください。

ウィキペディア小見出し辞書の「内部構造」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ

「内部構造」の例文・使い方・用例・文例

Weblio日本語例文用例辞書はプログラムで機械的に例文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「内部構造」の関連用語

内部構造のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



内部構造のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのTcl/Tk (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。
Tanaka Corpusのコンテンツは、特に明示されている場合を除いて、次のライセンスに従います:
 Creative Commons Attribution (CC-BY) 2.0 France.
この対訳データはCreative Commons Attribution 3.0 Unportedでライセンスされています。
浜島書店 Catch a Wave
Copyright © 1995-2024 Hamajima Shoten, Publishers. All rights reserved.
株式会社ベネッセコーポレーション株式会社ベネッセコーポレーション
Copyright © Benesse Holdings, Inc. All rights reserved.
研究社研究社
Copyright (c) 1995-2024 Kenkyusha Co., Ltd. All rights reserved.
日本語WordNet日本語WordNet
日本語ワードネット1.1版 (C) 情報通信研究機構, 2009-2010 License All rights reserved.
WordNet 3.0 Copyright 2006 by Princeton University. All rights reserved. License
日外アソシエーツ株式会社日外アソシエーツ株式会社
Copyright (C) 1994- Nichigai Associates, Inc., All rights reserved.
「斎藤和英大辞典」斎藤秀三郎著、日外アソシエーツ辞書編集部編
EDRDGEDRDG
This page uses the JMdict dictionary files. These files are the property of the Electronic Dictionary Research and Development Group, and are used in conformance with the Group's licence.

©2024 GRAS Group, Inc.RSS