最終更新:2019-06-10 (月) 02:48:55 (1927d)
Ruby/文法
導入
- とってもオブジェクト指向。
Ruby/シンタックスシュガー
メソッド呼び出し時の引数括弧の空白化
- メソッドを呼び出す時は( と ) の括弧書きを省略して空白を開けることで同等の処理をすることができる
sample_method("test") sample_method "test"
引数無しメソッドの括弧書き省略
- 引数がないメソッドの場合、括弧書きを省略することができる
sample_method2() sample_method2
Ruby/シンボル
:key
シンボルをキーにしたハッシュの直接記述(ハッシュ式のリテラル)
{:key => value}
- は
{key: value}
- と書ける
引数にハッシュを使う際の中括弧省略
- 引数にハッシュを指定する場合は { と } の中括弧を省略することができる
def arg_hash_sample(arg_hash) arg_hash_sample("key1" => "value","key2" => "value")
標準入出力
- gets - 標準入力
- puts - 標準出力 最後に改行がつく。
- print
print("hoge\n") print "hoge\n" print("Hello", " ", "Ryby!", "\n")#文字の連結
文法
- x...yというのは配囲を表すオブジェクト
コメント
- コメントは#
#コメントですわよ
- 複数行の場合
#複数行コメント(組み込みドキュメント) =begin the everything between a line beginning with `=begin' and that with `=end' will be skipped by the interpreter. =end
予約語
演算子
- ===右辺が左辺に含まれれば真、含まれなければ偽
組み込み変数
- $なんちゃら
組み込み定数?
変数と定数?
- ローカル変数
ローカル変数のスコープは、宣言した位置からその変数が宣言されたブロック、メソッド定義、またはクラス/モジュール定義の終りまで
hoge ||= 1 # hoge が偽か未定義ならば1を代入。初期化時のイディオムの一種。
- インスタンス変数
@で始まる。未初期化時はnil。
@hoge
- クラス変数
@@で始まる。未初期化時はnil。
@@hoge
- グローバル変数
$で始まる。未初期化時はnil。
$hoge
- 擬似変数(特殊な変数)
self # 現在のメソッドの実行主体 nil # true / false # nilとfalseは偽を表す。 __FILE__ # 現在のソースファイル名 __LINE__ # 現在のソースファイル中の行番号
- 定数
定数は大文字で始める
HOGE
組み込み関数?
Ruby/ブロック
Ruby/ブロックパラメータ
- ||で囲んだ範囲に書く。
3.times do |i| puts "Hello Ruby!" + i.to_s end
イテレータ
- eachとかcollect
- ブロック
- ハッシュの場合
キーと値のペアについてブロックを適用する。
- ハッシュの場合
- 配列の場合
配列の各要素に対してブロックを適用する。
- 文字列の場合
改行文字(\n)を区切りとして、各部分に対してブロックを適用する。
制御文
- if文
if 式 [then] ... elsif ... end
- thenをつける必要があるのは一行に記述するとき
if a == 1 then puts "a is one" end
- while文
while 式 .... end
- for文
#0~9 (.3つ) for i in 0...10 do puts i end array = ['A', 'B', 'C'] for i in array do puts i end puts array.length #0~10 (.2つ) for i in 0..10 do puts i end
- each文
array.each do |i| puts i end 10.times do |i| puts i end hogeObject.each do |i| puts i end
hogeObject.each do |i| なんか処理 i end
と
for i in hogeObject do なんか処理 i end
はほぼ同じ。
- case文
case time.hour when 6...9 puts "おはよう" when 9...17 puts "こんにちは" when 17...24 puts "こんばんは" when 0...6 puts "おやすみ" end
- yield
関数定義
#パラメタなし def 関数名 ... end #パラメタあり def 関数名(var1,var2=1) #2番目の引数にデフォルト値を指定 ... end #可変長引数 #最後の仮引数の直前に * がある場合には残りの実引数はみな配列としてこの引数に格納される def foo(x, *xs) puts "#{x} : #{xs.inspect}" # Object#inspect は p のような詳細な内部表示 end foo(1) #=> 1 : [] foo(1, 2) #=> 1 : [2] foo(1, 2, 3) #=> 1 : [2, 3]
クラス定義
class クラス名 < 親クラス 定数名 = '値' def initalize(x,y) #コンストラクタ @x = x #インスタンス変数 @y = y end attr_accessor :x #アクセッサ attr_accessor :y def クラス名.メソッド名 #クラスメソッド return ret end end インスタンス = クラス名.new クラス定数 = クラス名::定数名
モジュール
module モジュール名 #クラス定義とか end インスタンス = モジュール名::クラス名.new