ハッシュ その2

# ハッシュのキーを配列で返す h = {a: 1, b: 3, c: 5} h.keys #=> [:a, :b, :c] # ハッシュの値を配列で返す h = {a: 1, b: 3, c: 5} h.values #=> [1, 3, 5] # ハッシュに指定したキーが存在するか h = {a: 1, b: 3, c: 5} h.has_key?(:b)#=> true #ハッシ…

キーワード引数を使う

#キーワード引数を使うとメソッドの引数が何を表しているかわかりやすくなる def orderPizza(size: "M", qty: 1, crust:) puts "サイズ:#{size}、数:#{qty}、生地:#{crust}" end orderPizza(size: "L", qty: 2, crust:"Pan") #サイズ:L、数:2、生地:Pa…

ハッシュ

#ハッシュを作る hs = {'a' => 1, 'b' =>2} puts hs['a']#1 #値の設定 hs['a'] = 4 puts hs['a']#4 #繰り返し処理 #ブロック引数にキーと値が入る hs.each do |k , v| puts "#{k} : #{v}" end # a : 4 # b : 2 #ブロック引数が1つだと配列にキーと値が入る …

繰り返し処理

#eachメソッドで添え字を使いたい場合 s = ['a', 'b', 'c'] s.each_with_index { |c, i| puts "#{i}: #{c}"} # 0: a # 1: b # 2: c #2次元配列を繰り返すと配列がブロック変数に入る a = [ [1,2], [3,4], [5,6] ] b = [] a.each do |i| b << i[0] + i[1] en…

配列について2

#メソッドの可変長 def plus (*s) "#{s.join('と')}が引数に設定されました!" end puts plus(1,2,3) #1と2と3が引数に設定されました! #配列に配列を展開したい場合は*をつける #*をつけないと配列の配列になってしまう a = [1,2,3] puts [0, a].to_s #[0,…

配列について

#最後の要素の取り方 a=[1,2,3,4,5] a[-1] #=> 5 a.last #=> 5 #要素の追加 #<<でもpushでもできる。pushだと複数追加できる。 a=[1,2,3,4,5] a << 6 #=> [1, 2, 3, 4, 5, 6] a.push(7) #=> [1, 2, 3, 4, 5, 6, 7] a.push(7,8) #=> [1, 2, 3, 4, 5, 6, 7, 7,…

範囲オブジェクトRange

範囲を表せるオブジェクト。 ..や...を使って表す。 1..3 #1から3 1...3 #1から2 include?メソッドでは引数の値に含まれるか調べることができる。 (1..3).include?(3) #=> true (1...3).include?(3) #=> false age = 19 0 <= age && age < 20 #=> true (0...…

ブロック

RubyではFor文は使うかわりにeachメソッドを使う。 Javaでいう拡張For文のようなもの。 s1 = ['a','b','c'] s2 = "" s1.each do |s| s2 += s end puts s2 # abc |s|のことをブロック変数という。配列から取り出した1要素が順に格納される。do end を使わず…

4.2 配列

配列はArrayクラスのオブジェクト [].class #=> Array a=[1,2] #=> [1, 2] #値の取得 a[1] #=> 2 #値の設定 a[3]=4 #=> 4 #元の大きさより大き添え字に設定すると間はnilで埋められる。 a #=> [1, 2, nil, 4] #値が存在しない添え字を指定してもエラーにはな…

3.3 FizzBuzzプログラムのテスト自動化

テストフレームワークのminitestを使用する。 Rubyと一緒にインストールされている。 クラス名は慣習としてTestで終わるまたは始まる名前をつける。 メソッド名は test_ で始めることが必須。minitestでは test_ ではじまるメソッドを全て実行していく。 検…

2.10 真偽値と条件分岐について

2.10.1 &&や||の戻り値を評価を終了するタイミング &&や||を使った式全体の戻り値はtrueやfalseだけではない。 最後に評価した式の値を返す。 irb(main):002:0> 1 && 2 && 3 => 3 irb(main):003:0> 1 && nil && 3 => nil irb(main):004:0> 1 && false && 3 =…

2.9.4 数値クラスのあれこれ

整数はIntegerクラス、少数はFloatクラス。Ruby 2.3 までは大きな整数はBignumクラス、それ以外はFixnumクラスだったが、Ruby 2.4 からはIntegerクラスにまとめられた。 irb(main):046:0> 10.class => Integer irb(main):047:0> 1.5.class => Float irb(main…

文字列についてもっと詳しく

2.8.1 文字列もオブジェクト 'aaa'.class => String 2.8.2 %記法で文字列を作る %記法をつかうとシングルクオートやダブルクオートをエスケープする必要がない。!と!の間に任意の文字列を入れる。 %q! ! はシングルクオートで囲んだことになる。 %Q! ! と %!…

2.7 FizzBuzzプログラムを作成する

引数が3で割り切れる場合はFizzを返す。 引数が5で割り切れる場合はBuzzを返す。 引数が15で割り切れる場合はFizzBuzzを返す。 引数がそれ以外の場合はその数値を文字列にして返す。 def fizz_buzz(n) if n % 15 == 0 'Fizz Buzz' elsif n % 3 == 0 'Fiz…

第2章 Rubyの基礎を理解する

印象に残ったところを書いておく。 変数名はスネークケースで書く キャメルケースは使わない special_price = 200 文字列の比較 ’ruby' == 'ruby' #=> true ’ruby' != 'ruby' #=> false 数値と文字列は暗黙的に変換されない 1 + '2' #=> エラー 1 + '2'.to_i…

Ruby の本を買ってきた

今年はRubyを書けるようになりたい。 仕事帰りに本屋で プロを目指す人のためのRuby入門 を買ってきた。 これにしたのは、対象の読者がプログラミング経験を持っている人向けだったからなのと、例題とかがあって作りながら覚えてく形式になっていたから。 Ma…