Ruby 演算子と代入 スクリプトの書き方

バイオインフォ道場、くまぞうです。

Rubyが実行する式は、色々な演算を演算子で結合して作られています。よく使う演算子や注意点をチェックしましょう。

スポンサーリンク



演算子について

プログラムで演算を行う場合に使う記号です。他のプログラム言語と同じような記号を使います。

演算の優先順位

演算子には優先順位があります。優先順位が高い方から解釈されます。「(括弧)」でくくると、優先順位を変更または明示化することができます。

a || b && c    # 慣れていないと判りにくいかも。「b && c」が先に判断される。
(a || b) && c  # 「(a || b)」が先に判断される。

よく使う演算子

比較・等値演算子と否定演算子

比較演算子は、2つの値を比較><==するときに使います。結果は、truefalseを返します。否定は、「!」を併せて使います。一致しない場合は、!=で評価します。正規表現のマッチング比較も=~で評価し、!~で否定の評価を行います。パターンマッチする場合は位置、マッチしなければnilを返します。

(a = 10) > (b = 5)
=> true
(a = 10) != (b = 5)
=> true
a = "hello world"
a =~ /w.*/
=> 6  #文字列の6番目(先頭は0番目)から一致
File.open("aaa.txt").each do |line|
  next if line =~ /^#/  # ファイルのコメント行を飛ばす等の用途で使う場合
  # 処理
end

論理演算子とビット計算

論理演算は、真か偽かを判断するデータの演算です。if文などの条件文で良く使います。通常、truefalseを返しますが、値を直接返すこともあります。(x && y)の例。論理演算では、&&||を使います。間違って&|を使うとビット演算になるので注意が必要です。

x = 2
y = 3
puts "hello" if (x>1 && y>1)
=> hello
puts (x && y)
=> 3
puts (x || y)
=> 2
1 && 2  # 論理演算で値が返された場合
=> 2
1 & 2   # ビット演算
=> 0
printf("%04b", 1)  # ビット演算(確認)
=> 0001
printf("%04b", 2)  # ビット演算(確認)
=> 0010
(0b0001 & 0b0010)  # ビット演算(確認)
=> 0

三項演算子

ある条件に対して、trueのときとfalseのときの簡単な処理を一度に書くことができます。条件や対応する処理が複雑でなければ、if文よりも簡潔になることが多いです。

a = 11
result = (a > 10) ? "a > 10" : "a <= 10"
puts result
=> a > 10

べき乗演算子と数学関数

べき乗演算は、「**」を使います。数学関数はMathモジュールで定義されています。多くの数学関数を使う場合は、Mathモジュールを予めインクルードしておくと良いです。

2 ** 3
=> 8
2 ** 0.5
=> 1.4142135623730951
Math.log(8, 2)
=> 3.0
include Math
log(8, 2)
=> 3.0

代入

代入は、変数に初期値をセットしたり、変更したりするときに使います。

自己代入

代入の際、演算と代入を組合せて、簡潔に表現する方法です。+=, ||=、これらは使いやすくよく使われる自己代入だと思います。特に、||=は、初期値のセットや値の更新を明示的に行えるので重宝するときがあります。尚、演算に関する部分は、他の演算子に置き換えても使うことができます。(+,-,*,/ …)

a = 10  # a 10
a += 1  # a = a + 1 と同じ
=> 11
a %= 3  # a = a % 3 と同じ。%は割り算の余り
=> 2
a ||= 10 (aがnilの場合、10が初期値として代入される)
=> 10
a ||= 20 (すでにaはnilでないので、20は代入されない。10のまま。)
=> 10

多重代入

一度にたくさんの変数に値をセットするときに便利です。尚、「*(アスタリスク)」を使うと、配列を利用することができます。

a, b, c = 1, 2, 3      # a=1 b=2 c=3
a, b, c = 1, 2         # a=1 b=2 c=nil
a, b, c = 1, 2, 3, 4   # a=1 b=2 c=3
a, *b    = 1, 2, 3     # a=1 b=[2, 3]
a, *b, c = 1, 2, 3, 4  # a=1 b=[2, 3] c=4
スポンサーリンク





ピックアップ記事

  1. R 使い方 グラフの色 自作のカラーパレットとデフォルトのカラーパレット

    グラフを描画する際、色の組み合わせを1つ1つ考えるのは面倒ですよね。Rには、あらかじめ色の組み合わ…
  2. R plot 重ねる方法3パターン サンプルでわかるRの使い方

    Rでグラフ (plot) を重ねる方法は、「単純な追加」「図に重ねて描画」「濃淡で重なり表現」の3…
  3. awk if サンプルでわかる条件文の書き方 一致・大小比較・正規表現を簡潔に書く方法

    awkのif条件文は、条件によって処理をわけたいときに使います。条件式では、0の判定・関係演算子・…

人気記事

  1. Excel, その他, 統計

    z-score 計算方法 エクセル(Excel) 編
    統計処理で、大きく変化しているなどの判断基準にも使われる値…
  2. IGV, 解析ツール

    IGV 使い方 インストール〜便利な使い方まで | リファレンス・マッピングデータ・アノテーションを読み込んで表示しよう
    IGV(Integrative Genomics View…
  3. R データ型 - 文字列・ベクター・データフレーム・マトリックス など-, R言語, スクリプト

    R subset関数 データフレームやmatrixからの条件指定による行・列の抽出
    R の subset関数は、データフレームやマトリックスか…

おすすめ記事

  1. awk, bash 文字列操作, シェルスクリプト

    bash 部分文字列・置換・長さ・連結・分割の文字列処理
    bashのよく使う文字列処理、部分文字列・置換・連結・長さ…
  2. R言語, グラフ

    R 使い方 軸・ラベルの調整(向き・サイズ・色など) グラフの描き方
    Rによるplot(グラフ)の描画は、手軽で大変便利です。た…
  3. bash 応用, シェルスクリプト

    シェル スクリプト ファイル存在チェック・空のファイルチェック
    bashでスクリプトを作成するときに、よく使うのがファイル…