ruby雜餘方法

2021-06-20 07:23:37 字數 2179 閱讀 9207

很睏很睏!廁所裡洗了一把臉,雖然消除了些睏意,但還是有些疲倦。最近幾個月對自己太鬆懈。昨天經海波提醒,覺得該收收心了。手裡沒有專案,充實一下自己。給自己充充電!上午寫了兩篇,感覺收穫不少!繼續!!!

以下方法雖然用處不多,即使用到也可以查詢api。不過覺得還是總結一下吧。好記性不如爛筆頭。順便治治我的睏意。一舉兩得!

grouping

array#in_groups_of(size, fill_with) 將陣列的元素分組,組成固定大小的組:

(1..8).to_a.in_groups_of(3) # [[1, 2, 3], [4, 5, 6], [7, 8, nil]]

(1..8).to_a.in_groups_of(3, 0) # [[1, 2, 3], [4, 5, 6], [7, 8, 0]]

(1..8).to_a.in_groups_of(3, 0) # [[1, 2, 3], [4, 5, 6], [7, 8]]

array#split在某個數值或者集合的結果處,分割乙個陣列:

(1..8).to_a.split(4) # [[1, 2, 3], [5, 6, 7, 8]]

(1..8).to_a.split # [[1], [3, 5, 6, 7, 8]]

是不是可以和別人顯擺一下?下面還有更多的magic!

random selection

array#rand隨機返回陣列中的乙個元素

(1..10).map # [2, 7, 5, 3, 3, 2, 2, 1, 7, 6]
時間

time.now

time.now - 3.days

5.hous.from_now

1.month.ago

enumerable

(1..5).to_a.group_by  # 猜猜看結果,如果猜對,會有獎品

# 哈哈答案如下

# 基於block的執行結果把值分組到hash中

(1..5).to_a.index_by # 這結果呢?想一下。。。

# 輸出

# 基於block的執行結果把值索引到hash中。與group_by不同的是,每個索引鍵只保留一下值

range

range#include?顧名思義,檢查乙個range是否包含:

(1..10).include?(3) # true

(1..10).include?(15) # false

range#overlaps?檢查一下範圍是否與另乙個區間交疊

(1..10).overlaps?(3..15) # true

(1..10).overlaps?(13..15) # false

string

string#tableize 轉換類名成表名(在activerecord中)。string#classify轉換表名成類名

$kcode = "u" # 先記一下有這個東東 

'abc'[1] # 98

'abc'[1, 2] # bc

'abc'.first(1)

'abc'.last(1)

。。。。。。 字串的函式太多了。

symbol#to_proc

activesupport只給symbol定義了乙個擴充套件,但它卻是很強大的,提供了使用symbol#to_proc將乙個symbol轉換為乙個proc的能力。這個慣用法在整個rails中廣泛使用。**示例如下:

(1..5).map
如果使用symbol#to_proc就是下面這樣:

(1..5).map(&:to_s)
& symbol告訴ruby把symbol :to_s當作乙個block引數,ruby知道這個引數應當是乙個proc,試著呼叫to_proc方法把它轉換成proc。activesupport提供了symbol#to_proc方法,它返回同樣型別的乙個proc。當它被呼叫時,它在自己的第乙個引數上呼叫指定的方法。

頓時清爽了很多!!困病好了〜〜 做程式還是有很多好處的!

ruby入門 方法

要注意引數,可變長度引數,和引數預設值 還有物件的特殊方法 class person def say1 word1,word2 puts word1 word2 end variable var def say2 word puts word end default var def say3 wor...

Ruby常用方法

count 判斷內容l的個數integer型 full name.count l full name full include?判斷內容是否有l,boolean型 full name.include?l full name full equal?equal?方法用來判斷2個物件是否是同乙個物件 a....

ruby 同名方法

第一種情況 兩個版本的方法,其中乙個包含在類中,另一種包含在類的模組中。module a def say puts hello endend class b include a def say puts hello evryone endend b b.new b.say 輸出結果為 hello e...