PIONEの式

提供: Eospedia
2015年1月15日 (木) 08:03時点におけるKinoshita (トーク | 投稿記録)による版

移動: 案内検索

PIONEで使用する式のメソッド一覧を型ごとに示します。pione valによる実行例を記載しています。PIONE定義書の条件などで使用するときは' '内のみを使用します。

真偽型(boolean)

$ pione val 'true==true'
true
$ pione val 'true!=true'
false
$ pione val 'true and false'
false
$ pione val 'true or false'
true
$ pione val 'true.not()'
false
$ pione val 'true.as_string()'
true
$ pione val 'true.as_integer()'
1
$ pione val 'true.as_float()'
1.0
$ pione val 'true.as_boolean()'
true


.as_string(), .as_integer(), .as_float()はそれぞれの型に変換するメソッドですが、以下のような簡易表記があります。以降は簡易表記で記述します。

$ pione val 'true.str()'
true
$ pione val 'true.i()'
1
$ pione val 'true.f()'
1.0


文字列型(string)

$ pione val '"abc"=="def"'
false
$ pione val '"abc"!="def"'
true
$ pione val '"abc"+"def"'
abcdef
$ pione val '"abc".count()'
3
$ pione val '"abc".include?("ab")'
true
$ pione val '"abc".include?("ac")'
false
$ pione val '"abcdefg".substring(2,3)'
bcd
$ pione val '"abc".str()'
abc
$ pione val '"12.3".i()'
12
$ pione val '"12.3".f()'
12.3


整数型(integer)

$ pione val '1==2'
false
$ pione val '1!=2'
true
$ pione val '1>2'
false
$ pione val '1>=2'
false
$ pione val '1<2'
true
$ pione val '1<=2'
true
$ pione val '1+2'
3
$ pione val '1-2'
-1
$ pione val '1*2'
2
$ pione val '11%2'
1
$ pione val '1/2'
0
$ pione val '1.next()'
2
$ pione val '1.prev()'
0
$ pione val '1.even?()'
false
$ pione val '1.odd?()'
true
$ pione val '123.str()'
123
$ pione val '123.i()'
123
$ pione val '123.f()'
123.0


浮動小数点型(float)

基本的には整数型と同じです。(但し、next(), prev(), even?(), odd?()は無い)

$ pione val '1.0==1.00'
true
$ pione val '10.0!=1.00'
true
$ pione val '1.0>1.00'
false
$ pione val '1.0>=1.00'
true
$ pione val '1.00<10.0'
true
$ pione val '1.00<=10.0'
true
$ pione val '1.01+10.0'
11.01
$ pione val '1.01-10.0'
-8.99
$ pione val '1.01*10.0'
10.1
$ pione val '1.01/10.0'
0.101
$ pione val '101.0%10.0'
1.0
$ pione val '12.3.str()'
12.3
$ pione val '12.3.i()'
12
$ pione val '12.3.f()'
12.3


整数型の演算を浮動小数点型で出力したいときには予め.f()または.as_float()で型変換を行います。

$ pione val '1.01/10'
fatal: PIONE method "/" is not found: #<Type integer>. #<Type float> [/pione/lib/pione/command/basic-command.rb:48:in `abort'] (2014-12-08T11:51:11.481+09:00, #8995)
$ pione val '1.01/10.f()'
0.101


ルール表現型

pione valには対応していないので、式の定義のみ示します。



データ表現型

pione valには対応していないので、式の定義のみ示します。



シーケンス

$ pione val '("a"|"b"|"c").length()'
3


序数付きシーケンス



メソッドにおける注意事項

四則演算における注意事項

現バージョンでのPIONEにおける四則演算は二項演算のみに対応しています。三項以上の場合は必ず括弧を使用して二項になるようにします。

$ pione val '((5+3)*(4/2))-1'
15
$ pione val '1.0+((2.0-3.0)*(4.0/5.0))'
0.19999999999999996


PIONE定義書に記述するとき

if ($i * $j) + $k < $max