
OpenLaszloで作られたイベント会場でのモニタリングに最適なツイッター観測アプリです。
(2010/2/1リリース)
- OpenLaszlo紹介
- プログラム構造関連
- スクリプト
- Javascript基礎
- 基礎知識
- ビュー<view>
- レイアウト
- 動かす
- 入力デバイス
- 文字
- 数値
- 日付
- オブジェクト指向
- 標準コンポーネント
- データの扱い
- データ操作(基礎)
- 応用編
–
| a + b | 足し算 |
| a - b | 引き算 |
| a * b | 掛け算 |
| a / b | 割り算 |
| a % b | a を b で割った余り |
| a++ | 処理実行してから a を 1 増やす |
| a-- | 処理実行してから a を 1 減らす |
| ++a | a を 1 増やしてから処理実行 |
| --a | a を 1 減らしてから処理実行 |
※ a++ と ++a の違いに注意。
要注意。
<?xml version="1.0" encoding="UTF-8"?> <canvas proxied="false" bgcolor="0xeeeeee"> <handler name="oninit"> var a = 12; var b = 5; var r = a + b; t.addText("a+b=" + a+b + "\n"); // 文字列結合 t.addText(a+b);t.addText("\n"); // 足し算 t.addText(a+b + "\n"); // 足し算 t.addText(r); t.addText("\n"); // 足し算 </handler> <text id="t" fontsize="15" multiline="true"/> </canvas>
サンプルはa=12、b=5、c=10のときの結果:
| a+b | 17 |
| a-b | 7 |
| a*b | 60 |
| a/b | 2.4 |
| a%b | 2 |
| c++ | 10 |
| c-- | 10 |
| ++c | 11 |
| --c | 9 |
<?xml version="1.0" encoding="UTF-8"?> <canvas proxied="false" bgcolor="0xeeeeee"> <handler name="oninit"> var a = 12; var b = 5; var c1 = 10; var c2 = 10; var c3 = 10; var c4 = 10; var r1 = c1++; var r2 = c2--; var r3 = ++c3; var r4 = --c4; t.addText(a+b +"\n"); t.addText(a-b +"\n"); t.addText(a*b +"\n"); t.addText(a/b +"\n"); t.addText(a%b +"\n"); t.addText(r1 +"\n"); t.addText(r2 +"\n"); t.addText(r3 +"\n"); t.addText(r4 +"\n"); </handler> <text id="t" fontsize="15" multiline="true"/> </canvas>
| a = b | bの値をaに代入 |
|---|---|
| a += b | aとbを足した結果をaに代入 |
| a -= b | aからbを引いた結果をaに代入 |
| a *= b | aとbを掛けた結果をaに代入 |
| a /= b | aをbで割った結果をaに代入 |
| a %= b | aをbで割った余りをaに代入 |
サンプルはa=12、b=5のときのaの値:
| a=b | 5 |
| a+=b | 17 |
| a-=b | 7 |
| a*=b | 60 |
| a/=b | 2.4 |
| a%=b | 2 |
<?xml version="1.0" encoding="UTF-8"?> <canvas proxied="false" bgcolor="0xeeeeee"> <handler name="oninit"> var a = 12; var b = 5; t.addText(a=b);t.addText("\n"); var a = 12; var b = 5; t.addText(a+=b);t.addText("\n"); var a = 12; var b = 5; t.addText(a-=b);t.addText("\n"); var a = 12; var b = 5; t.addText(a*=b);t.addText("\n"); var a = 12; var b = 5; t.addText(a/=b);t.addText("\n"); var a = 12; var b = 5; t.addText(a%=b);t.addText("\n"); </handler> <text id="t" fontsize="15" multiline="true"/> </canvas>
これいつ使うんですかね?
一応、試してみました。ビット演算はビット単位でOR、AND、左右シフトができます。
NOTはないみたいです。
| a|b | a OR b |
|---|---|
| a & b | a AND b |
| a<< | aを左に1ビットシフト(数値としては2倍になる) |
| a>> | aを右に1ビットシフト(数値としては半分になる) |
a = 0xD ( 16進数D 2進数1101 10進数13 ) b = 0x9 ( 16進数9 2進数1001 10進数 9 ) とすると、 1101 OR 1001 = 1101 ・・・13(10進数) 1101 AND 1001 = 1001 ・・・ 9(10進数) 1101 左1ビットシフト = 11010 ・・・26(10進数) 1101 右1ビットシフト = 110 ・・・ 6(10進数)
<?xml version="1.0" encoding="UTF-8"?> <canvas proxied="false" bgcolor="0xeeeeee"> <script> var a = 0xD; // 16進数D 2進数1101 10進数13 var b = 0x9; // 16進数9 2進数1001 10進数 9 </script> <handler name="oninit"> t.addText(a|b);t.addText("\n"); // 1101=13 t.addText(a&b);t.addText("\n"); // 1001=9 canvas.bitShift(); </handler> <method name="bitShift"> <![CDATA[ t.addText(a<<1);t.addText("\n"); // 11010=26 t.addText(a>>1);t.addText("\n"); // 110=6 ]]> </method> <text id="t" fontsize="15" multiline="true"/> </canvas>
値の大小を比較評価します。比較の結果、真(true)か偽(false)が返ってくるので、それをもとに条件分岐します。
XML文書では < とか > は特殊な記号として扱われるので、必ず <![CDATA ~ ]]> で囲います。
サンプルは全部trueなので、テキスト表示のメソッドがすべて実行されています。
<?xml version="1.0" encoding="UTF-8"?> <canvas proxied="false" bgcolor="0xeeeeee"> <handler name="oninit"> <![CDATA[ var a = 10; var b= 20; if(a==10) t.addText("aは10に等しい \n"); if(a!=b) t.addText("aはbと等しくない \n"); if(b>a) t.addText("bはaより大きい \n"); if(a>=10) t.addText("aは10以上 \n"); if(a<b) t.addText("aはbより小さい \n"); if(a<=10) t.addText("aは10以下 \n"); ]]> </handler> <text id="t" fontsize="15" multiline="true"/> </canvas>
2つの値を評価して、その結果を論理値(true/false)で返します。
XML文書では & は特殊な記号として扱われるので、必ず <![CDATA ~ ]]> で囲います。
| !a | aではない時:true aである時:false |
|---|---|
| a&&b | aとbの両方がtrue:true それ以外:false |
| a||b | aかbのどちらかがtrue:true それ以外:false |
<?xml version="1.0" encoding="UTF-8"?> <canvas proxied="false" bgcolor="0xeeeeee"> <handler name="oninit"> <![CDATA[ var a = 10; var b = 20; var T = true; var F = false; if(T) t.addText("Tはtrueである \n"); if(!F) t.addText("Fはtrueではない=falseである \n"); if( a==10 && b==20) t.addText("a=10 b=20は両方true \n"); if( a==20 || b==20) t.addText("a=20はfalseだが、b=20はtrue \n"); ]]> </handler> <text id="t" fontsize="15" multiline="true"/> </canvas>
(A) ? (B) : (C) ;
if文なら数行になるような処理を、これなら1行で済ませることも可能です。
サンプルでは、ボタン名とテキストエリアの高さを制御しています。
<?xml version="1.0" encoding="UTF-8"?> <canvas proxied="false" bgcolor="0xeeeeee"> <simplelayout/> <button>開く <handler name="onclick"> this.setAttribute('text',this.text=="開く"?"閉じる":"開く"); t.animate('height',t.height==0?150:0,500,false); </handler> </button> <text id="t" width="100%" height="0" bgcolor="0xffffaa" multiline="true"> あいうえお<br/> かきくけこ<br/> さしすせそ<br/> たちつてと<br/> なにぬねの<br/> はひふへほ<br/> まみむめも<br/> らりるれろ<br/> </text> </canvas>