LoginSignup
5
0

More than 3 years have passed since last update.

ruby 学習アウトプット1

Last updated at Posted at 2019-12-17

はじめに

ただの初学者のrubyシルバー取得に向けての学習アウトプットです。
文章もただただ、タコ殴りしてるだけなので、温かい目で見守っていただけると幸いです。

今回の教材

公式擬似問題集

これは下記リンクからgithubに飛びます。
無料です。全50門解説もついてます。(ありがてぇ〜〜〜〜)
https://gist.github.com/sean2121/945035ef2341f0c39bf40762cd8531e0

やってみて

全然だめでした。。。。。
ということで、凹んでられないので詰まった部分を復習していきたいと思います。

以下復習

  • 可変長引数の問題
#下記の実行結果は?
def foo (a, *b)
  p a
end
foo(1,2,3,4)
#結果は
1

*bは可変長引数で引数を複数個設定できる。引数は配列として受け取られるので今回の場合

#*bの中身も出力してみる
def foo (a, *b)
  p a,b
end
foo(1,2,3,4)

#結果
1
[2,3,4]    #bは配列が出力される
  • sizeメソッド
puts({"members" => 193, "year" => 2014}.size)

#結果
2

sizeメソッドは要素の数を返す。今回はハッシュの要素数、配列の場合は配列の要素数。

  • clearメソッド

h = {1=>2, 3=>4}
h.clear
p h   #=>{}

ary = [1, 2]
ary.clear
p ary     #=>[]

#clearメソッドは空のハッシュ、配列を返す

ちなみに問題にはremove,destroy,empty?の選択肢があったのですが、remove,destroyNoMethodErrorempty?はハッシュと配列をそのまま返してました。

  • chopメソッド
#ヘロ〜
s = "hello"
puts s.chop

#しかし!!結果は!!
hell

#地獄!!


chopメソッドは最後の1文字を取り除いた新しい文字列を返しますが、末尾が\r\nで終わってる場合は2文字取り除きます。

ちなみにchompメソッドは末尾の改行コードを取り除きます。
rstripは文字列の末尾の空白文字を除去した新しい文字列を返します。
こんなにあるんか、、、、、、、、と気が滅入り、、、、、いや、がんばります。

  • IOクラスの問題
File.open("foo.txt","r") do |io|
puts io.gets
 puts io.read
  io.rewind
  p lines = io.readlines
end

このコードのio.rewindの処理は何か?って問題でした。
答えはIO#rewindはファイルポインターを先頭に移動させます。とのこと。
つか、IOクラスって何??って思いました。getとかは使っていたけど、IOクラスに関しては全くでした。頼りにしていたチェリー本でも網羅されていませんでした(泣)
なのでIOクラスはしっかり勉強しないとヤバ谷園ですね。()

  • sort

odd = [1,3,5]
even = [2,4,6]
num = odd + even
p num.sort

[1,2,3,4,5,6]

#ちなみにsortをつけないと
[1,3,5,2,4,6]

sortがないときの挙動も確かめときました。

  • 正規表現の問題

/^[hc].*o$/i
この正規表現にマッチするものを2つ選べよ。

A.Hello
B.holland
C.Cello
D.h35L320

こちら先頭の文字がhかc(iオプションで大文字小文字無視)で.*で何かしら文字が連続してoで終わるってことで答えは。。。A,Cだ!!!!
ということなのですが、私、アルファベットのoを数字の0と読み間違えて、ハマってました(泣)

復習してみて

2回目は流石に9割以上解けました。1回目に答えだけでなく1門1門調べて理由まで説明できるようにしました。まぁ、まだまだ、先は長いのでアール。。。。。

5
0
3

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
5
0