[[
Values
]]
Xtal Unofficial Wiki
現在位置:
Xtal Unofficial Wiki
»
Xtal Reference
»
Values
文書の表示
以前のリビジョン
最近の変更
サイトマップ
ログイン
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== Values ====== 多値です。 関数型言語に良くあるタプルみたいなものを想像していただければわかりやすいかと。 ,で区切った列が多値として認識されます。なお、配列とは似てるけど違うので注意。 <code cpp> (1, 2, 3, 4, 5).p; </code> 左辺と右辺の値の数が異なるときは、特殊な動作をします。 左辺の方が多いとき、足りない分はundefinedで埋められ、左辺の方が少ないとき、余分な分は左辺の最後の変数に多値として格納されます。 <code cpp> a, b, c : 1, 2; a.p; b.p; c.p; a, b = 1, 2, 3, 4; a.p; b.p; </code> ===== Example ===== 関数の戻り値として使うのが便利だと思います。 <code cpp> // 実際はC++からバインドする // テクスチャインスタンス, 横幅, 縦幅 の多値を返す fun lib::CreateTexture(filename){ return "This is Texture of "~filename, 512, 512; } tex, texw, texh : lib::CreateTexture("foo.png"); tex.p; texw.p; texh.p; tex2, tex2size : lib::CreateTexture("bar.png"); tex2.p; tex2size.p; </code> なお、C++で多値を返したい場合は、関数のreturnを使うのではなく、return_resultを呼び出す必要があります。 # Values返してもダメなのかな? <code cpp> // 戻り値はvoidで良い void CreateTexture(const xtal::StringPtr& filename){ xtal::vmachine()->return_result(xtal::xnew<String>("This is Texture of ")->cat(filename), 512, 512); } </code> 上の方法だと4つまでしか返せないので、もっと返したい場合は、自分でValuesPtrを作ってreturn_result_mvを呼び出す必要があります。 <code cpp> void Return6Values(){ using namespace xtal; vmachine()->return_result_mv( xnew<Values>(0, xnew<Values>(1, xnew<Values>(2, xnew<Values>(3, xnew<Values>(4, xnew<Values>(5))))))); } </code>
reference/values.txt · 最終更新: 2011/02/23 23:20 by sukai
文書の表示
以前のリビジョン
文書の先頭へ