LotosLabo

プログラミング技術とか気になった情報を載せていきます

Ruby言語について1

Rubyの特徴

・シンプルな文法
・普通のオブジェクト指向機能(クラス、メソッドコールなど)
・特殊なオブジェクト指向機能(Mixin、特異メソッドなど)
演算子オーバーロード
・例外処理機能
イテレータクロージャ
・ガーベージコレクタ
・ダイナミックローディング(アーキテクチャによる)
・移植性が高い。多くのUNIX上で動くだけでなく、DOSWindowsMacBeOSなどの上でも動く

Ruby日本語サイトより引用しました。
https://www.ruby-lang.org/ja/




開発エディタ

テキストエディタでも書き、コマンドプロンプトで実行できるのですが、私的には好きではないので、RDEという開発環境を使っていきます。
また、Ruby On Railsはここでは触れませんのでまた今度紹介します。ちなみにRuby On RailsとはオープンソースのWebアプリケーションフレームワークで、開発環境にはAptana Studioというのを使っています。

f:id:lo25131:20140128225903j:plain

f:id:lo25131:20140128225907j:plain

RubyRDEのインストール


こちらのサイトを参考にしていただけると簡単にインストールできます。

Rubyを使ってみよう!(1/4):ビギナーのためのRubyプログラミング入門


基本プログラム

テキスト表示

print("hello")
print "hhh"
puts("hhh")

改行あり
puts "aaa"

エラー表現
puts("Hello")puts("World")

改行して書く

また「;」セミコロンをつけるとエラーにはならない。
puts("Hello");puts("World")


コメントの書き方

#これはコメントになる

=begin
この複数行は
コメントとなる
=end

文字コード

日本語などを使用する場合には文字コードを意識しなければならない。

print("日本語");
これではエラーとなってしまう。そのためにグローバル変数$KCODEを使用する。

SJIS → Shift_jiS
EUC → EUC-JP
UTF8 → UTF-8
NONE → NONE(ASCII)

文字化け対策

Rubyではコンソールウインドウでの日本語表示が困難なため、表示するには 次の文を最初に指定する。

#!ruby -Ks


文字列オブジェクト


例:

String.new("こんにちは");
print("こんにちは".class());

出力:

String

こんにちはという文字列オブジェクトはStringクラスのオブジェクトである。


改行

print("こんにち\nは");

\nで今まで通り指定できる。

エスケープ

\" で表示できる

シングルとダブル

print 'あいうえお';
print "あいうえお\n"

シングルでは全てが文字列として扱われ、ダブルでは変数と織り交ぜて使える。

%Q|文字列|
%Q!文字列!
%Q*文字列*
%Q{文字列}
%Q[文字列]
%Q(文字列)
%Q<文字列>

%Qがダブル、%qがシングルとして扱いで、同じ文字列で囲むと代用できる


(使いかた)

例:

print(%Q[こんにちは\nお元気]);
print(%q[こんにちは\nお元気]);
print(%Q!こんちは\!こんちは!);

ヒアドキュメント

複数の行の出力に対して便利なもの。同じ文字列で先頭行と最終行を囲むことにより出力できる。

例:

よく使われるのがEOSである

ーーーーーーーーーーーーー
End Of String<<'EOS'



EOS<<"EOS"

い\nう

EOS
ーーーーーーーーーーーーー

また変数や文字列として扱えるため


ーーーーーーーーーーーーー
print(<<"EOS");



EOS

str = <<"EOS"
あいう


EOS

print str;
ーーーーーーーーーーーーー

文字列の中に式を展開


#{式}として記述

例:

print("名前は #{'伊藤'} です")
print("年齢は #{20 - 5} です")
name = "東京"
print("出身は #{name} です")

文字列の連携

str1 = "名前は"
str2 = "佐藤"
str3 = "です"
str = str1 + str2 + str3
print str

  1. で連携できる

print "HELLO" + "HHHE";


文字列の繰り返し


文字列 * 回数
"Good!" * 3

例:

str = "Good!"
num = 3
x = str * num
print x
print "こんにちは" * 2

文字列オブジェクトに文字列を追加


print("こんにちは" << "山田さん")

str = "Tokyo"
str << "Japan"
print str

数値オブジェクト


Numeric
Integer
Fixnum
Bignum
Float

整数の場合は Fixnum
大きな整数 Bignum
小数点 Float

10進数 214
2進数 0b11010110
8進数 0326
16進数 0xD6

数値の出力

print(10)
print(3.14)

オブジェクトのクラス名

print(10.class(), "\n")
print(3.14.class())

>数値区切り

3_420_500

出力は

3420500

四則演算

print("5 * 3 = ", 5 * 3, "\n")
print("8 / 2 = ", 8 / 2, "\n")
print("4 + 6 = ", 4 + 6, "\n")
print("7 - 2 = ", 7 - 2, "\n")
print("5 % 2 = ", 5 % 2, "\n")
print("5 ** 3 = ", 5 ** 3, "\n")

(優先順位が高い)
**
* / %
+ -
(優先順位が低い)

ビット演算子

 & a & b ビットAND
 | a | b ビットOR
 ^ a ^ b ビットXOR
 ~ ~a ビット反転
 << a << b 左シフト
 >> a >> b 右シフト

ビットAND

11 & 14
11 14

1011 = 11
1110 = 14

比較して両方の値が 1の場合は 1
片方が 0であれば 0になる

結果

1010になる  → 10

ビットOR

10 | 12
10 12

1010 = 10
1100 = 12

どちらかが 1の場合は 1
それ以外は 0とする

結果

1110となる

ビットXOR


10 ^ 12

1010 = 10
1100 = 12

0110

二つの値が同じ場合は 0になる

ビット反転

~ 10

000000000000

111111111111101  補数表示

  • 11となる

左シフト

a << b
たとえば 11 << 1

11を左に1シフトすると

22になる  左に1シフトすることで 2倍になる

右シフト

右に1シフトすると 1/2になる



<参考書籍>

たのしいRuby 第3版

たのしいRuby 第3版