【講座?】CoRを触ってみる12~演算子編~【自分用メモ?】

投稿者:Material 185033 3 mini 光楼(114) 投稿日:2017/04/01 14:54

【講座?】CoRを触ってみる11~多次元配列編~【自分用メモ?】←前回

前回の答え
scene 'start' do #シーンstart
  arr = [
    [0, 1, 2, 3],
    [10, nil, nil, 13],
    [20,
      [21, 21.1, 21.2],
      22
  ]]
end

start_scene "start"

実はdebug_logで答えが分かる。

#このブログの情報は2017年4月1日現在のものです。今後変更になる可能性があります。


演算子とは

演算するための記号。
もっと簡単に言うと計算や比較するときに使う記号です。
+とか、==とか。

さて、演算子にも種類があります。
1つ1つ見ていきましょー!

あ、先に言っておきますがa++とかa--とかは2017/11/04現在使えませんのでご注意ください。

算術演算子

ここからだってのに、演算子がゲシュタルト崩壊を始めた……。

算術演算子は足し算等、四則演算をする演算子です。

Rmakeで使えたものは全て使えるので、新たに使えるようになったものだけ紹介します。
ただし、ドキュメントに書かれてないのもあるので注意です。

代数演算子

演算子意味備考
a ** baのb乗

文字列演算子

算術演算子という分類で良いのだろうか?
文字列に対して使う演算子です。
なお変数に変化を与えるものもあるので注意です。
演算子意味備考
a << baにbを連結しますa自体が変更されます
a * baをb回繰り返しますaが「あ」,bが「3」なら「あああ」
以下フォーマット関連使えなくなる可能性がでかい
"%d" % aaを整数にするaは数値。小数点を切り捨てる。シングルクォーテーションでも可
"%b" % aaを2進数にする
"%o" % aaを8進数にする
"%x" % aaを16進数にする
"%f" % aaを実数(小数点6桁くらいまで)にする
"%e" % aaを指数表記にします結果が「1.100000e+02」だと、1.1 × (10の2乗)
"%g" % aaを最適な形式に変えます小数点を四捨五入したり指数表記したりを自動で判断
"%5.3f" % a桁数の指定%とアルファベットの間に「全体の最小の幅.小数点以下の最大の幅」という形で桁数の指定が出来る
"%010.2f" % aゼロ埋め桁数指定前に0を一つ書くだけ
"%-10.2f" % a左詰め桁数指定前にマイナスを付け加えるだけ
"%+10.2f" % a符号表示桁数指定前にプラスを書くと符号を出してくれる

代入演算子

=等、代入する演算子
演算子意味備考
a += ba = a + b
a -= ba = a - b
a *= ba = a * b
a /= ba = a / b
a %= ba = a % b
a **= ba = a ** b累乗
a &= ba = a & bビット演算子。後程説明
a |= b
a = a | b
a ^= ba = a ^ b
a <<= ba = a << b
a >>= ba = a >> b
a &&= ba && (a = b)変数の中身が存在する場合のみ代入するとき等に使うと良い?
a ||= b
a || (a = b)
変数の中身が存在しない場合(nilの時)のみ代入するとき等に使うと良い?

関係演算子

2つの値の比較を行う演算子。
条件とあっていればtrueが返る。
演算子意味備考
a <=> b「a < b」なら「-1」、「a == b」ならば「0」、「a > b」なら「1」、比較できない時は「nil」を返す
a === baとbが等しいかcase文のマッチングと同じ仕組みの比較を行う
(1..5) === aaが1~5の範囲内か小数指定可能
('a'..'z') === aaがa~zの範囲内かこのように文字も可。ひらがなもOK
String === aaが文字列か

論理演算子

論理演算を行うための演算子。
演算子意味備考
not a
!a
!
より優先度低い
a and ba && b&&より優先度低い
a or b
a || b
||
より優先度低い

ビット演算子

ビット演算を行うための演算子。
ビット演算についての知識がないと扱うのは難しい。
演算子意味備考
~aビットを反転
a & bビット積(どちらも1の時1)
a = 3 #3 => 011
b = 5 #5 => 101
debug_log "#{a & b}" #1 => 001
a | b
ビット和(どちらかが1の時1)
a = 3 #3 => 011
b = 5 #5 => 101
debug_log "#{a | b}" #7 => 111
a ^ b排他的論理和(どちらかが1の時のみ1)
a << baをbビット左シフト
a >> baをbビット右シフト



三項演算子

if文をスリムに書ける。
演算子意味備考
a ? b : c条件 ? 式1 : 式2
if 条件
 式1
else
 式2
end
a = true
text = a ? "はい" : "いいえ"
debug_log "#{text}" #はい

配列演算子

配列をあれこれする。
演算子意味備考
arr1 + arr2配列の結合
arr1 = [1,2,3,4,5,6,7,8]
arr2 = [1,5,6]
arr3 = arr1 + arr2
debug_log "#{arr3}" #[1, 2, 3, 4, 5, 6, 7, 8, 1, 5, 6]
arr1 - arr2配列arr1から要素arr2を取り除く
arr1 = [1,2,3,4,5,6,7,8]
arr2 = [1,5,6]
arr3 = arr1 - arr2
debug_log "#{arr3}" #[2, 3, 4, 7, 8]
arr1 * n配列arr1の要素をn回繰り返す
arr1 = [1,2,3]
n = 3
arr3 = arr1 * n
debug_log "#{arr3}" #[1, 2, 3, 1, 2, 3, 1, 2, 3]
arr1 & arr22つの配列に共通する要素で配列を作る
arr1 = [1,2,3]
arr2 = [1,3,5]
arr3 = arr1 & arr2
debug_log "#{arr3}" #[1, 3]
arr1 | arr2
上記に加え、片方にしか含まれない要素も追加して配列を作る
arr1 = [1,2,3]
arr2 = [1,3,5]
arr3 = arr1 | arr2
debug_log "#{arr3}" #[1, 2, 3, 5]
arr1 << a配列arr1に要素aを追加した配列を作る
arr1[n..m]配列arr1のn~mの要素からなる配列を作る
arr1 = [1,2,3,4,5,6,7,8]
n = 1
m = 5
arr3 = arr1[n..m]
debug_log "#{arr3}" #[2, 3, 4, 5, 6]
arr1[n, len]配列arr1のn番目からlen個の要素で配列を作る
arr1 = [1,2,3,4,5,6,7,8]
n = 1
len = 3
arr3 = arr1[n, len]
debug_log "#{arr3}" #[2, 3, 4]
arr1[n..m] = a配列arr1のnからm番目の要素をaに置き換え統合
arr1 = [1,2,3,4,5,6,7,8]
n = 1
m = 4
a = 5
arr1[n..m] = a
debug_log "#{arr1}" #[1, 5, 6, 7, 8]
arr1[n, len] = a配列arr1のnからlen個の要素をaに置き換え統合
arr1 = [1,2,3,4,5,6,7,8]
n = 1
len = 3
a = 11
arr1[n, len] = a
debug_log "#{arr1}" #[1, 11, 5, 6, 7, 8]


色々と使えなくなる可能性大ですが、Rmakeに比べて圧倒的に多くなりましたね。
有効的に使っていきましょう。
本日は以上!疲れた!

次回→【講座?】CoRを触ってみる13~三目並べを作る1~【自分用メモ?】

コメントする

コメントするには、ログインする必要があります。

コメント一覧

Cdv30200 aoi icon mini aoihikawa(投稿日:2017/04/01 23:53, 履歴)
そうそう
こういうドキュメントが
かなり大事だったりします
Material 185033 3 mini 光楼(114)(投稿日:2017/04/02 09:26, 履歴)
そう言って頂けると書いた甲斐があります!
            mini mosmoss(投稿日:2017/04/01 18:48, 履歴)
演算子が今までと違うのは覚えるまで大変そう
このページは要ブックマークですね
Material 185033 3 mini 光楼(114)(投稿日:2017/04/02 09:25, 履歴)
今までの演算子も使えるのですが、やはり新しいのを使いたくなりますよね。
でもこれだけあると、確かに忘れてしまいそうですw