RoR week3 Ruby程式語言基本核心介紹

證照考試:
  1. 叫出ruby的工作環境:在終端機打 irb
第一個 Ruby 程式
  •  puts("hello world")
可輸出字串
在ruby裡面小括號是可以適當省略的
直接
  • puts "hello world"

觀念:在Ruby裡面,所有的東西都是物件

常數與變數
Ruby裡面常數的宣告是,直接把第一個字母大寫
只要是第一個字大寫就是常數,後面是否全部大寫都算
變數:全部的名字都要小寫
例如:
  • Poi = 19
  • puts Poi
觀念:在Ruby裡面常數Constant是可以被改變的,只是會warning

  • name = "eddie"
  • age = 18
  • puts "Hi my name is #{name}, I'm #{age} years old!!"

:Symbol
:符號 的用途
規定字串全部指向同一塊記憶體
如果沒有用的話:
可看出五個字串用了五個記憶體位置
如果有使用:的話

Array
使用方法例:
  • friends = ["kk","yy", 1,2,3]


去Rails的環境
指令:
  • rails c
要在rails專案裡面打 rails c 才有用!
倘若上面的array放進來的話可以這樣用
  • friends = ["kk","yy", 1,2,3]
  • friends.last 
可拿出最後一個元素
另有
.first
.second
.third

洗牌程式
1 ~ 52 慢慢打好累
簡單寫法:
(1..52).to_a
to_a 是把它轉成array
shuffle 洗牌 to_a.shuffle
sample 取樣

Hash
有兩種寫法:
  • book = {title:"abc", price: 100}
比較老的寫法:
  • book = {:title=>"abc", :age=>18}

如何存取?
使用Symbol去拿
book[:title]

常見錯誤用
book["title"]
去拿
修改方法:

使用 Range 注意事項
  • (1..10)  #=> 1,2,3 ... 10
  • (1...10) #=> 1,2,3 ... 9

迴圈
純粹跑五次
  • 5.times do
  •     puts "hello, ruby"
  • end
從 1 跑到 5
  • 1.upto(5) do |i|
  • puts "hi, ruby #{i}"
  • end
從 5 跑到 1
  • 5.downto(1) do |i|
  • puts "hi, ruby #{i}"
  • end

  • friends.each do |friend|
  • puts friend
  • end

  • friends.each_with_index do |friend, x|
  • puts ""

function
  • def say_hello_to(name)
  •     puts "hello, #{name}"
  • end

執行Ruby 程式
1. 在終端機打指令
ruby 檔案名
2. 在sublime text 裡面執行
Tools -> Build

if else
小練習
 

加上問號 ?
ruby 裡面function最後面可以加上問號
代表這個function 回傳 true or false
宣告function時也可以使用問號來簡化code
可以省打 return
還可以再更精簡一點

加上驚嘆號 !

物件導向程式設計
Class 的名稱一定要常數 (第一個字母一定要大寫)
例:
  • class Animal
  •     def eat(food)
  •         puts "#{food} is Yammy!!"
  •     end
繼承
  • class Cat < Animal
  • end

instance variable
這裡的 return 可省略

Ruby語言裡所有東西都是物件
example
1 + 2 其實是 1 物件呼叫 + 方法把 2 加進來

class當中的Get與Set
要做 set 
其實就是要去定義 =() 的方法
如此就可以輕鬆做到 set
使用  attr_accessor:
這可以輕鬆做掉上面的 set get
上面這幾行,可用一行 attr_accessor: hair_color 取代掉
  • class Human

  •         attr_accessor :hair_color
  •         #attr_reader :hair_color 
  •         #attr_writer :hair_color 

  •         def initialize(hair)
  •                 #instance variable
  •                 @hair_color = hair
  •         end
  • end

  • p Human.instance_methods(false)

attr_accessor 可讀可寫 (get, set)
attr_reader   只能讀不能寫 (get)
attr_writer 只能寫不能讀 (set)

Singleton Method
Ruby可以在任意物件,定義任意方法

Class Method
根據上面經驗,類別方法可以這樣定義
寫在外面不好,搬進去寫
搬進去寫,如果class name換掉就沒用了
可以使用更廣用的 self 來代稱自己

印出所有方法
使用 p 
如果只想要看自定義的方法就在 ( ) 裡面加上false

手動製作 rails 裡面的 days.ago 方法
首先先來看錯誤訊息
找出缺少什麼
下一步


module 
模組不能長東西出來
類別才可以

::  name space
這個符號 :: 叫做 name space
例如
  • class User < ActiveRecord::Base
  • end
生活化的解釋例如
板橋金城武
三重金城武

使用  class, superclass 來檢視他是什麼東西
nil 沒東西了!
再來看看 Animal

Ruby Object Model

object 與 class 之差別?


留言

這個網誌中的熱門文章

[筆記] CRLF跟LF之區別 --- 隱形的 bug

[ML筆記] Batch Normalization

[筆記] 統計實習(1) SAS 基礎用法 (匯入資料並另存SAS新檔,SUBSTR,計算總和與平均,BMI)

[ML筆記] Ensemble - Bagging, Boosting & Stacking