Ruby

Contents

基本文法


Hello World


print(“Hello World\n”)

基本ファイル構成














コメント


# comment

変数


共通単値変数





数値


数値リテラルは自動的にオブジェクトに変換される。
整数は通常はFixnumクラスのインスタンスとなる。


文字列




真偽値


true、falseがそのまま使える

if true
   puts("true")
end

if false
else
   puts("false")
end

if !false
   puts("false")
end



順序配列








連想配列









算術演算


3+3
3-3
3*3
3/3
3%3
3**3 # 27 (べき乗)

インクリメント(++)、デクリメント(–)はない。

比較演算


数値・文字列ともに同じ演算子を使用する。

一致


num1 == num2

不一致


num1 != num2

一致・不一致


左項が多きければ正値、等しければ0、小さければ負値がかえされる。
num1 <=> num2

正規表現一致


str =~ /abc/

正規表現不一致


str !~ /abc/

クラス比較


AClass === ainstance
右項が左項のクラスに属している場合、trueを返す

OR


||

AND


&&

NOT


!

ビット演算


否定


~2 # -3

左シフト


1 << 2 # 4

右シフト


4 >> 1 # 2

ビット和


1 | 3 # 3

ビット積


5 $ 3 # 1

ビット排他的論理和


1 ^ 3 # 2

検査


読み込み可能




書き込み可能




実行込み可能




存在する




ファイルが存在する




ディレクトリが存在する




サイズが0




サイズが0より大きい





シンボリックリンクが存在する




制御構文


for


for <変数> in <配列オブジェクト> [do]
    
end

for each


Rangeオブジェクトや配列オブジェクトを使用して書く





while


while 条件 [do]
	処理内容
end

条件がfalseであればループを行う場合はuntilを使用する。

until 条件 [do]
	処理内容
end



do while


begin
	初期処理
end while 条件

条件がfalseであればループを行う場合はuntilを使用する。

begin
	初期処理
end until 条件

break


break [戻り値]
if文を伴う場合、
break if 条件

戻り値を指定することで、値を返すことができる。

continue


next
if文を伴う場合、
next if 条件

redo


ループにおいて、再度同じ周回を行う
redo
if文を伴う場合、
redo if 条件


if


if 条件
   実行内容
end

一行に書く場合、thenもしくは:が必要
if 条件 then 実行内容
end
or
if 条件 : 実行内容
end
更に短縮して、以下のように書くことも出来る。
実行内容 if 条件

unless


if notの場合はunlessを用いる。
unlessの場合、elseしか後続できない。
unless 条件
   実行内容
end

if else


if 条件
   実行内容
elsif 条件
   実行内容
elsif 条件
   実行内容
else
   実行内容
end

switch case


case num
when 1
	puts(1)
when 2
	puts(2)
when 3..10
	puts("3 - 10")
else
	puts("NO match")
end

文字列操作


連結


str << "appended "

部分切り取り


str = "abcde"[0-2]

置換


str = "abcde".gsub("bcd", "234")
str = "abcde".gsub(/b[a-z][a-z]/, "234")

分割





クラス


一般的なクラス


class <クラス名>
	クラス内容定義
end

private / protected化


class定義内で、private/protected宣言の以降に記述したインスタンスメソッドはprivate/protectedメソッドとなる。
class <クラス名>
	クラス内容定義
	protected
	クラス内容定義
	private
	クラス内容定義
end

クラスメソッドをprivate化する場合、private_class_methodメソッドを使用する
private_class_method(:メソッド名, ...)

変数・定数



外部からのアクセス方法
<クラス名>::<定数名>



setter / getterの生成


インスタンス変数に対して、自動でsetterメソッド、getterメソッドを生成できる。



継承


class <子クラス> < <親クラス>
	
end

メソッド内で、オーバーライド前のメソッドを呼び出す場合はsuperを使用する。
def methodA(x)
	super(x)
end

再定義


宣言したクラスを再度宣言することで、上書きすることができる。
class AClass
	def methodA
		return 1
	end
	
	def methodB
		return 2
	end
end

 class AClass
	def methodA
		return 3
	end
end
上記の例の場合、methodAのみ新しい定義で上書きされる。

Module


ほかのクラスに組み込んで使用されるオブジェクトで、多様なクラスに共通の機能を持たせたいときに使う。
継承と違い、複数種類使用することができる。
モジュール内はクラスと同様にメソッドや定数などを宣言できる。

module <モジュール名>
	
end

ほかのクラスで使用する
class AClass
	include <モジュール名>
	
end

ネームスペースとしての使用


パッケージの概念がないRubyではモジュールをネームスペースとして使用できる。

module AModule
	class AClass
	
	end
end

module BModule
	class AClass
	
	end
end

上記はそれぞれ別のクラスとして利用でき、次のように呼び出す。
aclass = AModule::AClass.new()
bclass = BModule::AClass.new()

メソッド


メソッド名にはアルファベットや数値のほか、!と?の記号が末尾に使用できる。
?はブール値を返すメソッド名に使用するのが慣習的である。
!はオブジェクトの内容が破壊される場合に使用するのが慣習的である。
これらの記号がメソッド名に使用されている場合は、呼び出し時に記号は省略できない。

一般的なメソッド


def <メソッド名> (引数...)
	処理内容
end

()は省略可能である。

return


returnは省略可能で、省略した場合は、最後に評価された式の結果となる。
つまり
return arg1+arg2
は以下のように記述することができる。
arg1+arg2
また、returnに複数の値を , で繋げて書くと配列として戻される。
return 1,2,3
のようになる。

staticメソッド


def self.<メソッド名> (引数...)
	処理内容
end


初期化メソッド


newにより、インスタンスを生成する際に呼び出される。
def initialize (引数...)
	処理内容
end

引数






例外


例外の発生


raise [例外クラス,] <メッセージ>
例外クラスを指定しなかった場合はRuntimeErrorとなる。

例外の捕捉


begin
	例外が発生する可能性のある処理
rescue [例外クラス, ...] [=> 例外変数]
	例外処理
rescue [例外クラス, ...] [=> 例外変数]
	例外処理
else
	例外が発生しなかった場合の処理
ensure
	いずれの場合にも実行される処理
end

例外クラスを指定しなかった場合はStandardErrorクラスを指定したとみなされる。
例外変数を指定しなかった場合でも $! 変数により参照できる。
また、 $@ 配列変数でスタックとレースを参照できる。

特殊なリテラル


文字コード


文字の前に?をつけることで、文字コードの数値を取得できる。
?A # 0x41

数値区切り


数値の間に_をはさむことができる。
1_000_000 # 1000000

外部コマンド実行


“で挟んだ文字列は外部コマンドとして実行され、結果の文字列が返される。
`pwd`

%記法


%<フラグ><記号><文字列><記号>
の形式で記述した文字列は特殊な形式に変換される。


Rangeオブジェクト


<整数>...<整数>
もしくは
<整数>..<整数>

正規表現


/<正規表現>/[フラグ]

特殊な変数




コマンドライン引数


ARGV

テキストファイル操作


オープン





リード








クローズ



書き込みオープン



追記書き込みオープン



ライト



ネイティブコマンド実行


バッククォートで囲むとネイティブコマンドとして実行される。
結果は行数にかかわらず、1行に連結して返されるので、別途分割が必要。
result = `<コマンド>`.split("\n");

その他


BEGIN / END


プログラム実行開始時、終了時に行いたい処理をBEGIN / ENDブロック中に記述することができる。

BEGIN
{
	処理内容
}

END
{
	処理内容
}



標準関数


文字列系



ファイル系



その他




Tips


Notice: Trying to get property 'queue' of non-object in /usr/local/wordpress/wp-includes/script-loader.php on line 2876

Warning: Invalid argument supplied for foreach() in /usr/local/wordpress/wp-includes/script-loader.php on line 2876