Codecademy是一個可以線上學習程式語言的地方,透過許多的線上題目,你可以快速地學習語言.目前支援的語言有Python,Ruby,PHO,CSS與JavaScript.

每天花不到十分鐘,透過接近一個月的時間,我也把兩三百題都做完了.
在此記錄一些心得與比較重要的了解:  

Codecademy學習Ruby感想:

這裡些先一些使用Codecademy在學習上的感想吧,希望對大家可以帶來一些幫助

  • 題目不難,但是要讀懂題目比較困難:

    • 大部份的概念其實在Wiki可以看到,但是透過一兩百題不斷地教導.很多觀念會慢慢地深入在你的心裡.
  • 題目主要著重在觀念的傳遞,會不斷地教導:

    • 這裡面主要會利用互動的方式(也就是叫你在螢幕上寫一段code)然後跑出他想要的結果.

    • 所以可能~~寫一個 method 會跑了三個題目一步步來教導你,更別說class會有更多的題目來引導

  • 真的看不懂?沒關係有提示:

    • 別怕真的不會寫,他最後通常都有提示會告訴你應該怎麼進行這個題目.基本上全部會用到的語法都會給你.

接下來會寫一些在這個地方學到個概念,其實之前光是靠Ruby Wiki 與一些自己在學習的實作上面就已經把大部份的概念了解.但是一步步仔細去看反而有不少令人驚豔的地方,讓人覺得Ruby真是個有趣的語言:

關於Ruby的學習:

  • Chapter 15: Blocks Procs 跟 Lambda差異

    • 這一章節相當有趣,把三個容易搞錯的概念 Blocks Procs 與 Lambda來比較,這裡先把三種寫法都先寫一次

      • Block:   

        • block_a = { DO_SOMETHING }
      • Proc:    

        • proc_a = Proc.new {  DO_SOMETHING } 

        •  proc_a.call

      • Lambda:

        • lambda_a = lambda { DO_SOMETHING }

        • lambda_a.call

    • 接下來會把它們的不同與差異來詳述一下:

      • Proc 與 Lambda都是一種Block但是有一些差異~接下來會提到

      • 跟Block不同,Lambda與Proc都可以當成參數傳遞並使用 .call 來呼叫

      • Proc與Lambda都可以傳遞參數,但是Lambda會檢查參數的個數,但是Proc會把他裝成nil

      • Lambda的return 會回到caller,但是Proc直接回傳

def batman_ironman_proc
victor = Proc.new { return “Batman will win!” }
victor.call
“Iron Man will win!”
end

puts batman_ironman_proc

#print Batman will win!

def batman_ironman_lambda
victor = lambda { return “Batman will win!” }
victor.call
“Iron Man will win!”
end

puts batman_ironman_lambda
#print Iron Man will win! 

* 更多部分可以參考: [http://www.adamjonas.com/blog/procs-and-lambdas/](http://www.adamjonas.com/blog/procs-and-lambdas/)

Evan

Attitude is everything