到Ruby世界不可不認識:雜湊
雜湊 Hash這是個類似陣列的容器型資料型態,裡面的資料是一組一組相互對應,我們會稱為 key 跟 value,與陣列不同的是,這裡面沒有排序,不能透過[索引]方式取出內容,且用大括號包起來。
Hash 有以下的幾個特色:
keys 和 values 可以由任意 object 組成
keys 的值不可重複
values,是對應 keys 的物件,值可以重複
最容易想像的資料型態就像學生的成績紀錄,如同下面的表示,name 和 score 都是這個 hash 的 key,可以想像成一個而主要的標題,分別對應的內容就是’Sean’, 100 這兩個值。
123student_score = { name: 'Sean', score: 100 }list = {:name => "Sean", :name => "Tom"} #出錯,不能重複指定key
表示方法
舊式 (符號箭頭)
1profile = { :name => 'Sean ...
到Ruby世界不可不認識:符號
符號 Symbol符號也是一個 Ruby 特有的資料型態,很多剛從別的程式語言進來的朋友,剛開始比較難習慣這樣的東西。連原本寫 ruby 的可能都不見得解釋得清楚,但我會努力整理清楚我對這個資料的認知給大家。
命名及定義
符號 = 有名字的物件
命名規則類似變數,是以用英文字母或數字的組合
例如:name, :class, :名字, :類別,要在中間加上空白也沒問題。但大多還是以英文字母的組合為主。
常跟字串搞混:
字串可以被改變,符號不行
兩者都是一種物件(值),都可以被變數指向
12345:name = "Sean" # 出錯"name" = "Jack" # 出錯name1 = 123 # 變數指向數字name2 = "Jeff" # 變數指向字串name3 = :Steve # 變數指向符號
實際使用可能你會問,為什麼需要這樣的類型,那不是就用字串就好,但實際上這兩種類型效能有差別,符號執行的效能上比較好一些,我們會在 rails 開發中大量使用。
效能的比較可以透過查詢他 ...
到Ruby世界不可不認識:陣列
陣列 Array陣列是每個程式語言很常碰到的資料型態,你可以想像前面講過的字串、數字通通可以塞進一個容器裡面,必且依照順序的排好,所以陣列最特別的是,有順序且是一堆資料的集合,在程式的世界裡常用這樣的方式來儲存資料,因此衍伸出許多特別的方法來處理這類型的資料,讓我們可以輕鬆拿到其中想要的內容。
建立陣列可以透過直接指定的方式,或是藉由 ruby 特殊的%w 方式建立,但要注意這種方式所產生的內容都是字串。
12list = ["apple","bird","哈樓", 1, 2]list = %w(apple bird 哈樓 1 2) # ["apple","bird","哈樓", "1", "2"] => 用這種方式會產生的 "1","2" 是字串
拿出陣列內的元素/長度要拿到內部的元素,我們可以透過 [索引] 的方式來取得,其中索引依照順序是從 0 開始算,像是下面 ...
到Ruby世界不可不認識:變數、數字、字串
變數、數字、字串程式語言的世界由許多種不同類型的資料型態構成,讓我們可以在進行撰寫時針對不同的情況做選擇,今天讓我們來認識基本的幾種類型吧!
變數 Variable變數指定與使用變數可以想像成一個標籤,可以貼在各種類型的資料上面,如數字、字串、陣列等,而變數本身沒有型態,被貼上後就成了指定東西的型態。
通常在程式語言中 “=” 並不是大家想的等於,而是指定的意思,被指定過的變數還是可以再指定成別的資料。
在 Ruby 中變數有以下的特性:
使用不須宣告或指定型態,可以直接拿來使用
可以重複被指定
命名使用英文字母、數字或底線的組合、或是非英文字母也可以
常數
1234567891011# 變數指定name = "Sean"s = 1#指定多個變數a,b,c = [1,2,3]puts name # 印出 Seanputs s # 印出 1puts a,c # 印出 1, 3
常數定義12Food = “rice”Drink= “coke”
在 Ruby 比較特別的是常數可被修改,會出現警告訊息,但就只是警告而已,不是錯誤訊息,程式仍可正常執 ...
進入Ruby世界記得說 “hello world”
Hello World剛開始學一個程式語言通常都會要你先想辦法印出 “hello world”,主要是能夠把目前程式執行的狀態或是結果呈現出來,確認我們的程式碼以及環境能夠正常執行。
至於實際為什麼是印出 hello world 這兩個字可以參考 Hello World 程式是什麼意思?這 1 篇講解由來與原因
初學者可以使用的 Ruby 編輯器 Replit
印出字串主要有三種方式,比較常見的為第 2-3 種
print :印出字,不含換行 (視覺效果差,較少用,加上是其他程式語言使用的,不夠 Ruby)
puts : 印出字,含換行
p : 印出字及引號,含換行,可以藉此來判斷目前印的完整狀態 (是否有逗號、括號、引號等等)
123456# 印出 Hello, Worldprint "Hello, World"# 印出 Hello, World 字樣,並在結尾加上換⾏puts "Hello, World"# 印出 "Hello, World" 字樣(含雙引號),並在結尾加上換⾏p "Hello, Wor ...