やるからには完成させる

30歳の崖っぷちフリーターがゼロからWebアプリ開発にチャレンジするブログ

今日の進捗_20170323

ものすごく詰まってました。
一応解決したので途中経過を報告します。

1.今日やったこと

Chapter7(ハッシュ前まで)
サンプルコード入力して結果を見たり、気になったことを試し結果を確認しました。

2.良かったこと

特に無し

3.悪かったこと

C言語の予備知識とrubyが似通っている部分で思い込みで勘違いをし、長引いた。

4.これからやってみたいこと

わりと気になったことを検証していく。

5.その他感想

今回、気になった点、詰まった点について
気になった点
putsはダブルクォーテーションかシングルクォーテーションで囲むと記載されているが、のちのサンプルソースで()で記載されており、こちらでも動いた。
()で囲むときはダブルクォーテーションとシングルクォーテーションで違いがあるのか、どうか

詰まった点、3点。
まず1点目。.to_iの使い方、使い道がよくわからない。
文字列に数字がある場合、変数に代入できる様だが直接していしたほうが楽なので何故あるのだろうか。
a = “123”.to_i
でaに123が代入される。
a = “abc”.to_i
ならaは0だったが、
a = “12cd56”.to_i
ならaは12になっていた。
数字から文字までを取り扱うようで、文字後の数字は取り扱わないみたい。

次はcase文
先に本を一通り読んだ方は気にならないだろうが、一つづつ進もうとすると謎の文がでてくる。
「..」はやりたい事をなんとなく察したが、動きが不明だった為、case文は使いにくそうなイメージを持った。
しかし、サンプルソース以外をいろいろと試した結果、以下のことがわかった。
case 変数 とwhile条件は比較演算子のA == Bのように変数 == 条件に近い処理をしていた。
その為、while aやwhile a % bといった書き方が可能で、while a != 0といった書き方はできない。
「..」の場合は、指定した範囲に変数と条件が合うのがあれば処理がされるが、この場合正しくない条件も含まれているので厳密には変数 == 条件ではないのかもしれない。
if文とループ文とかでチェックしているのかどうかも確認できなかった。
また、case文とwhile文の間に変数の設定や初期化ができなかった。

最後にfor文
C言語の知識ある人の一部は引っかかってしまうかもしれない。
C言語だとfor(i=0;i<=10;i++)といった感じに条件をつけられる。
しかしrubyのfor文は必ず0から始まりインクリメントでしか進まない。
C言語ならfor(i=1;i<=10;i=i+2)といった、iは1開始の1個飛ばしができるが、rubyではできないみたいだ。
もしかしたら出来る方法があるのかも知れないが、現在勉強している範囲では記載されていなかった。

先入観なしにこの書籍を読んでいれば気にしなかったのだが、
rubyのfor 変数 in 配列はここで定義した変数は配列[i]の中身が入れられている事だ。
最初、上記のように設定ができるものだと思い込んでいたのが仇となった。
設定した変数がインクリメントされるものだと思った時もあれば、
for文の前に変数を用意し初期値を設定等もした。
ここでさらにどつぼに嵌る。
毎回変数に配列[i]が代入されることを忘れていたせいで、無駄な検証をし続けるはめになった。
変数の代入とか省略されているから、そこに気がつけない。
時にC言語のfor文とごっちゃになっててんわやんわ。
やっと、理解できたと思って本を読み直してみると素直に書いてあった。

6.明日やること

Chapter7の続きとChapter2の予習