未経験からプログラマに、俺はなる!!〜とある東大生の挑戦記〜

院進学予定の東大農学部生がふと思い立ち、10か月でアメリカのプログラマーになるまでの記録(初めての方は左上のリンクから「このブログについて」に飛べます)

Launch School備忘録4(Preparatory-Back-Ruby)

---------------------------------------------------------------------------------------

Have nothing in your house that you do not know to be useful, or believe to be beautiful.

ー William Morris

---------------------------------------------------------------------------------------

変数はスコープの大きさで分けて5種類ある。

定数、グローバル変数、クラス変数、ローカル変数、インスタンス変数である。

・定数

全て大文字と_で定義する。

rubyでは再定義も可能だが非推奨。

 

グローバル変数

$をつけて定義する。

アプリ全体で使える(ので危険)。

 

・クラス変数

@@をつけて定義する。

 

インスタンス変数

@をつけて定義する。

 

・ローカル変数

何もつけない。

 

getsは、コンソールで入力を求め、入力をstring型の返り値として返すメソッド。get + string。

gets.chompにすると最後に¥nが付かない(逆にこれを付けないとつく)ので、基本的にはgets.chompを使う。

# say.rb refactored again

def say(words='hello')
  puts words + '.'
end

say()
say("hi")
say("how are you")
say("I'm fine")

で、デフォルト値を設定できる。

この時関数の呼び出しとして、

sayもsay "XX"も有効。かっこなしはすげー

けどsayがローカル変数に見えてくるので注意。

メソッドにより引数の値を変更することを

mutating the caller

と言う。

# Example of a method that modifies its argument permanently
# mutate.rb

a = [1, 2, 3]

def mutate(array)
  array.pop
end

p "Before mutate method: #{a}"
mutate(a)
p "After mutate method: #{a}"

の場合はpopでaから3が抜ける(それはpopメソッドの返り値になってる)のでBeforeは[1,2,3]、Afterは[1,2]になる。

irb(main):001:0> a = [1,2,3]
=> [1, 2, 3]
irb(main):002:0> def mutate(array)
irb(main):003:1> array.pop
irb(main):004:1> end
=> :mutate
irb(main):005:0> p "Before mutate method: #{a}"
"Before mutate method: [1, 2, 3]"
=> "Before mutate method: [1, 2, 3]"
irb(main):006:0> mutate(a)
=> 3
irb(main):007:0> p "After mutate method: #{a}"
"After mutate method: [1, 2]"
=> "After mutate method: [1, 2]"

な感じ。「popメソッドがmutate the caller」しているのが分かる。

 

a = [1, 2, 3]

def no_mutate(array)
  array.last
end

p "Before no_mutate method: #{a}"
no_mutate(a)
p "After no_mutate method: #{a}"

 

これだと変わらない。

lastメソッドはmutate the callerをしないから。

 

Rubyの大きな特徴の1つは、「最後に評価された行の返り値が返り値になる」こと。

You are getting wiser and more confident with Ruby. だって。

自信付いてきてるの前提なのが面白いww

まあ普通の日本語訳にしたら「自信付いてきましたよね?」なんだろうけど、俺が訳すとしたら普通にたぶん彼らは「あなた、自信付いてきてますよ。」って言ってる感覚だと思うww

 

暇つぶし動画。日本語でここまで再生されてる動画ってない気がする。

The Duck Song - YouTube

 

最近無駄な持ち物増えたなって感じること多いです。片付けよう。。

 

〜英語備忘録〜

succinct:簡潔な