RoR week3 Ruby程式語言基本核心介紹
- 取得連結
- X
- 以電子郵件傳送
- 其他應用程式
證照考試:
- 叫出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 之差別?

- 取得連結
- X
- 以電子郵件傳送
- 其他應用程式

留言
張貼留言