2012-08-18 64 views
5

我一起觀看吉姆·韋裏奇截屏類聲明父在那裏,他開始做這樣的事情:傳遞價值在Ruby中

class Subuser < User("Type") 
end 

是否紅寶石讓你通過參數定義一個父類的時候?我不能拿出一個能夠真正起作用的例子。

+0

什麼是截屏? – 2012-08-19 23:29:22

+0

[Peepcode](https://peepcode.com/products/play-by-play-jimweirich-ruby)和Jim Weirich一起玩 – Kormie 2012-08-20 04:11:13

回答

7

你可以做到這一點通過聲明的方法User這需要一個參數,並且返回一個類:

class Admin 
end 

class Client 
end 

def User(arg) 
    case arg 
    when :admin 
     Admin 
    when :client 
     Client 
    end 
end 

class Subuser < User(:admin) 
end 

Subuser.superclass 
# => Admin 
+3

像這樣的巫師,在屏幕視頻中很酷,對其他人來說並不是很有趣,保持。記住「其他人」往往包括你未來的自我,忘記了這種事情的含義。如果運氣好的話,你將能夠找到答案並在發生這種情況時刷新你的記憶,但最好避免這一點。 – tadman 2012-08-18 05:41:23

+0

這個「巫術」是怎麼回事?大寫的方法是常見的(例如'Integer(「1」)'),並且從表達式繼承是常見的(例如'類什麼 2012-08-18 06:30:56

+0

Struct示例不同,因爲它是Struct上的新方法,即它看起來像一個方法。我在stdlib中遇到的唯一其他示例是委託類之一(不記得哪一個)。 – 2012-08-18 07:13:01