2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Ruby silver合格までにやったこと

Posted at

①チェリー本を改めて1周した
②RExを9割以上になるまでやる

https://rex.libertyfish.co.jp/ ③ネットにある問題はやっておく https://gist.github.com/sean2121/945035ef2341f0c39bf40762cd8531e0 http://www.minituku.net/courses/1049510743/contents/775230600.html ④問題を解いている中でわからないORしらないものは片っ端からGoogle先生にお世話になる。&常にirbやエディタでコードを動かして挙動を確かめる。

なんとなく気になるところを自分なりにまとめていたものです👇

  • マジックコメント
    エンコーディングはcoding: エンコーディング名の前後に任意の文字を入れても良い&大文字・小文字どちらでも可

  • 0xでスタートする数値は16進数リテラル

  • p [].sizeは0になる。nilじゃない。

  • p [].to_i(to_sも)は0ではなくエラーが起きる。

  • 定数PIはMathモジュールに定義されているもの

  • sprintf関数は書式を揃えるときに使う。第1引数にはフォーマットを指定する。第2引数にフォーマットしたい値を指定する。

  • Rubyではメソッド内定数を定義することができない。

  • Hash({})で空のHashオブジェクトを生成できる

  • Stringクラスにto_hto_aのメソッドはない

  • 例外処理 StandardErrorを継承しないクラスのインスタンスをraiseメソッドの引数に指定すると、TypeErrorが発生する

  • <=>では文字列数値は比較できない

    • メソッドと変数の探索順位は変数が先
  • absはIntegerクラスSelfの絶対値を返す 正・負の方向に関係なく考えた時の値 -33

  • require

    • requireするとファイルが評価される
      • 読み込んだものがclassの場合、そのまま使える
      • 読み込んだものがmoduleの場合、includeしないと使えない
  • extend (モジュール)

    • extend Module_name とすると、特異クラスにモジュールのメソッドが追加される

do ... endと{ ... }を比べた場合、{ ... }の方が結合度が強い

p [1,2,3,4].map do |e| e * e end
do ... endの結合度が弱いため、p([1, 2, 3, 4].map)が評価されます。

Time系

||||
|----|-----|-----|----|
| %x | 日付(%m/%d/%y) | 01/05/15 |
| %D | 日付(%m/%d/%y) | 01/05/15 |
| %F | 日付(%Y-%m-%d) | 2021-11-01 |
|%r|時分秒とAM or PM(12時間制)|12:00:00 AM|
|%T|時分秒(24時間制)|03:46:11|
|%Y|西暦を表す数(9999)|2015|
|%y|西暦の下2桁(00-99)|15|
|%m|月を表す数字(01-12)|01|
|%d|日(01-31)|05|
|%-d|日(1-31)|2|
|%R|時分(24時間制)|03:46|
|%M|分(00-59)|00|
|%p|午前または午後(大文字)|AM|
|%P|午前または午後(小文字)|am|

識別子・予約語.png

優先順位.png

判定式 == === eql? equal?違い

a = 2
b = 2.0

p a == b      # => true
p a === b     # => true
p a.eql? b    # => false
nil.eql?(NilClass) #=> false
p a.equal? b  # => false

目についたメソッドまとめ

表1.png
表2.png
表3.png
表4.png
表5.png
表6.png
表7.png
表8.png
表9.png

gsub!とreplaceの違い

gsub!
gsub(pattern, replace) -> String
文字列中で pattern にマッチする部分全てを文字列 replace で置き換えた文字列を生成して返す。
replace:置き換える文字列のパターンを表す文字列か正規表現

str = "aaabbb"
str = str.gsub!("a","c")
puts str   #=> cccbbb

replace
シーバーの値を新しい値に置き換えてしまうのはgsub!メソッドと同じ
gsub!メソッドのように部分的に一致する文字列を変更するということはできない。
文字列全部を新しい文字列全部に変更できる。

str = "aaabbb"
str = str.replace("c")
puts str    # => c

%記法

%、%Q ダブルクオートで囲う場合と同等 変数・定数の展開可能
%q シングルクオートで囲う場合と同等 変数・定数の展開不可
%W 配列を作る 式の展開がされる
%w 配列を作る。配列の要素はスペース区切りで指定する。 式の展開はされない
%I 要素がシンボルの配列を作る。 式の展開がされる
%i 要素がシンボルの配列を作る。 式の展開がされない
%x コマンド出力を行う。バッククオートで囲った場合と同等
%s シンボル。 式の展開がされない

メタ文字

  • . 改行以外の任意の1文字にマッチする。ただしオプションmの指定によって複数行モードの場合は改行にもマッチする。
  • [] []内のいずれかの1文字
  • [^..] どの文字でもない
  • a-z 英字にマッチする
  • \w 英数字とアンダースコアにマッチする
  • \W 英数字とアンダースコアではない文字にマッチする。(\w以外の1文字にマッチする)
  • \s 空白文字にマッチする。(スペース、タブ、改行、復帰、垂直タブ)
  • \S 空白文字ではない文字とマッチする。(\s以外の1文字)
  • \d 0から9までの数字1文字にマッチする。
  • \D 0から9までの数字ではない文字にマッチする。(\d以外の1文字)
  • \A 文字列の先頭にマッチする。^とは違い改行の直後の文字ではない文字にマッチする。
  • \z 文字列の末尾にマッチする。(改行含む)
  • \Z 文字列の末尾にマッチする。(改行を含まない)

#Procクラス
ブロックを持ち運び便利なオブジェクトにしたもの
Proc.newで生成可能。作成されたProcオブジェクトはCallで呼び出し可能。
Procオブジェクトは変数は共有されない

仮引数を設定する事が可能

proc1 = Proc.new { |par1| p par1 }
proc1.call("arg") #=> "arg"

lambda
Procオブジェクトを作る方法の一つ
Proc.newで作成されたオブジェクトと違う点

1.png

###&演算子(積集合「&」)

重複している要素は取り除かれ、共通する要素を取り出す。

a = [1, 2, 3]
b = [1, 3, 5]
a & b #=> [1, 3]

###&&演算子

&&は a と b がどちらも真のとき、最後に評価された b を出力する

a && b #=> [1, 3, 5]

#&, &&, |, ||演算子それぞれの動きの違い
###|演算子(和集合「|」)

重複している要素は取り除かれ、重複している要素をまとめて出力する。

a = [1, 2, 3]
b = [1, 3, 5]
a | b #=> [1, 2, 3, 5]

###||演算子

||は a と b がどちらかが真のとき、最初に評価された a を出力する

a = [1, 2, 3]
b = [1, 3, 5]
a || b #=> [1, 2, 3]

a = nilの場合右辺の処理が行われる

a || b #=> [1, 3, 5]

よく使われる特殊文字

  • \n:改行  LF文字(Line Feed)
  • \r:改行 CR文字(Carriage Return)
  • \t:タブ 

10進数以外の整数リテラル

  • 2進数の場合は0b
  • 8進数の場合は0
  • 16進数の場合は0x

unless文

条件式が偽になったときにだけ処理を実行する。unless文でelseは使えるがelsifは使えない。thenも使える。

お世話になった 偉大な記事

https://qiita.com/ffggss/items/0bab2a1e80e941378b49 https://qiita.com/kidach1/items/651b5b5580be40ad047e https://melborne.github.io/2012/06/18/i-am-inject-lover-too/
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?