簡體   English   中英

Ruby:如何在循環塊參數中指定類

[英]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解釋器將知道該方法在運行時是否存在。 如果您嘗試在沒有定義這些方法的類型上使用method1method2 ,它將簡單地引發異常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM