「PIONEの式」の版間の差分
提供: Eospedia
(→文字列型(string)) |
(→整数型(integer)) |
||
行115: | 行115: | ||
$ pione val '123.f()' | $ pione val '123.f()' | ||
123.0 | 123.0 | ||
+ | $ pione val '1.upto(10)' | ||
+ | 1 2 3 4 5 6 7 8 9 10 | ||
+ | $ pione val '20.downto(11)' | ||
+ | 20 19 18 17 16 15 14 13 12 11 | ||
+ | $ pione val '(1|2|3).max()' | ||
+ | 3 | ||
+ | $ pione val '(1|2|3).min()' | ||
+ | 1 | ||
</pre> | </pre> | ||
<br> | <br> |
2015年1月16日 (金) 08:13時点における版
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 $ pione val 'true.as_data_expr()' true $ pione val '(true|false).every?()' false $ pione val '(true|false).any?()' true $ pione val '(true|false).one?()' true $ pione val '(true|false).none?()' false
.as_string(), .as_integer(), .as_float(), .as_data_expr()はそれぞれの型に変換するメソッドですが、以下のような簡易表記があります。以降は簡易表記で記述します。
$ pione val 'true.str()' true $ pione val 'true.i()' 1 $ pione val 'true.f()' 1.0 $ pione val 'true.d()' true
文字列型(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".insert(2,"def")' adefbc $ pione val '"abc".str()' abc $ pione val '"12.3".i()' 12 $ pione val '"12.3".f()' 12.3 $ pione val '"abc".d()' abc
整数型(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 $ pione val '1.upto(10)' 1 2 3 4 5 6 7 8 9 10 $ pione val '20.downto(11)' 20 19 18 17 16 15 14 13 12 11 $ pione val '(1|2|3).max()' 3 $ pione val '(1|2|3).min()' 1
浮動小数点型(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定義書で示します。
シーケンス
$ pione val '((3|5)|7)' 3 5 7 $ pione val '(3|5|7)==((3|5)|7)' true $ pione val '(3|5|7)!=((3|5)|7)' false $ pione val '(3|5|7).each()' 3 5 7 $ pione val '(3|5|7).all()' 3 5 7 $ pione val '(3|5|7).each?()' true $ pione val '(3|5|7).all?()' false $ pione val '(3|5|7).all().all?()' true $ pione val '(3|5|7).type()' integer $ pione val '(3.0|5.0|7.0).i()' 3 5 7 $ pione val '(3|5|7).f()' 3.0 5.0 7.0 $ pione val '(3|5|7).str()' 3 5 7 $ pione val '(3|5|7).str().type()' string $ pione val '(3|5|7).length()' 3 $ pione val '(3|5|7).empty?()' false $ pione val '(3|5|7).textize()' 3 5 7 $ pione val '(3|5|7).nth(2)' 5 $ pione val '(3|5|7)[2]' 5 $ pione val '(3|5|7).member?(3)' true $ pione val '(3|5|7).reverse()' 7 5 3 $ pione val '(3|5|7).head()' 3 $ pione val '(3|5|7).tail()' 5 7 $ pione val '(3|5|7).init()' 3 5
メソッドにおける注意事項
四則演算における注意事項
現バージョンでの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