バイオインフォ道場、くまぞうです。
プログラムで数値や文字を直接記述することは自然に行いますが、「リテラル」ということを覚えておくと、活用の幅が広がるかもしれません。
リテラルとは
プログラム中で使いたい番号や、ファイル名などの文字列など固定の値として使うことがあります。このように、プログラム中で、数値や文字列を直接的に記述方法はリテラルと呼ばれます。色々な書き方があります。
Rubyで色々なリテラルを使う
数値リテラル
数値リテラルは、文字列リテラル同様よく使う記述方法です。整数・小数は普通に使うと思いますが、16進数表記なども一応覚えておくと便利なときがあります。例えば、リードのマッピング情報でSAMファイルを得られますが、FLAG情報はビットの位置で情報を管理しています。人が読むには難しい情報ですが、プログラムで解析を行う場合は、2進数や16進数表記などを使うと比較的解析しやすくなるかもしれません。
lit1.rb
#! /usr/bin/ruby a = 6 printf "%04d\n", a printf "%04b\n", a
$ lit1.rb 0006 # 10進数 0110 # 2進数表記 ビットの位置がわかりやすい
文字列リテラル と ヒアドキュメント
文字列リテラルも良く使う記述方法です。文字列の囲み方は、「”(ダブルクォート)」または「’(シングルクォート)」があります。通常はどちらも同じ効果を得られますが、その他の情報と組み合わせて使う場合には注意が必要です。文字列内で他の情報と組み合わせる場合は「”」を使います。単純に文字列として扱いたい場合は「’」を使います。ヒアドキュメントでは、複数行にわたるメッセージを使うことができます。「<<EOS〜EOS」までがメッセージになります。EOSは任意の文字列の組をマークにできます。
lit2.rb
#! /usr/bin/ruby
a = "hello"
puts "a=#{a}"
puts 'a=#{a}'
puts
b =<<EOS
hello
world.
EOS
puts b
$ lit2.rb
a=hello # 文字列と組み合わせた変数が展開後出力
a=#{a} # ただの文字列として出力
# 複数行をそのまま表示
hello
world.
配列 と ハッシュ
配列やハッシュは、生成時に初期値を設定することができます。配列は、カンマ区切りで値を列挙します。ハッシュは、キーと値をセットにして並べます。尚、キーと値は「=>」で連結します。
lit3.rb
#! /usr/bin/ruby
a = [1, 2, 3]
b = {1=>"AAA", 2=>"BBB", 3=>"CCC"}
puts a[1]
puts b[1]
$ lit3.rb 2 AAA
正規表現
正規表現のパターンをリテラルで記述します。「/」で囲んで表現します。尚、$1は正規表現に合致した部分の抜き取りで、(w.*)の部分で「wを先頭にした文字パターン」を保存するように指示しています。
lit4.rb
#! /usr/bin/ruby "hello world" =~ /(w.*)/ puts $1
$ lit4.rb world
範囲
範囲を記述することが出来ます。範囲は「..」または「…」で指定します。例えば「1..3」「1…3」とした場合、前者は1,2,3ですが、後者は1,2。つまり終端を含む・含まないの相違があります。
lit5.rb
#! /usr/bin/ruby
(1..3).each {|x| puts x}
puts
(1...3).each {|x| puts x}
$ lit5.rb 1 2 3 1 2
コマンド
rubyのプログラム中から、システムのコマンドを呼び出すときに使います。system関数内に文字列リテラルを記述します。尚、バッククォートで囲む方法もあります。
lit6.rb
#! /usr/bin/ruby
system('cat aaa.txt')
file="aaa.txt"
system("cat #{file}")
$ lit6.rb aaa bbb aaa bbb
![バイオインフォ 道場 [bioinfo-Dojo]](https://bioinfo-dojo.net/wp-content/uploads/2016/03/some_object_luca-bravo-alS7ewQ41M8-unsplash.jpg)

