[英]Ruby: How to specify class in loop block argument
我想知道如何指定循環塊參數的對象類型。
基本上,我想說:
my_collection = MyCollection.new
my_collection.each do |my_collection_object|
# how can I call method1 and method2 of my_collection_object?
my_collection_object.method1
my_collection_object.method2
etc...
end
我想我應該將自己的迭代循環方法(#each)編寫到自己的集合類中,但是由於我是一個完整的菜鳥,所以我不知道該從哪里開始。 請給我指導。 感謝幫助!
編輯:我想進一步澄清我的不理解。 要完成以上操作,我需要在下面的類中返回MyCollection
對象的#each方法塊參數。
如果我只是從上面的代碼段調用method1和method2,它會自動知道在哪里尋找method1和method2嗎? 它是如何做到的? (對不起,如果原始問題稍有更改)
class My_Collection_Object
def method1
...
end
def method2
...
end
end
您無需擔心將類型信息傳遞到塊中,因為Ruby使用Duck Typing 。
在鴨式打字中,程序員只關心確保對象在給定上下文中的行為符合其要求,而不是確保它們屬於特定類型。
這意味着您不必擔心將類型傳遞到塊中,因為Ruby解釋器將知道該方法在運行時是否存在。 如果您嘗試在沒有定義這些方法的類型上使用method1
和method2
,它將簡單地引發異常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.