正如您可能知道的那樣,ruby與大多數腳本語言一樣是動態類型的。我如何確保傳遞給我的方法的參數是特定類的實例?如何確保方法在ruby中具有某種類型
回答
使用is_a?
:
def your_method(param)
if param.is_a? String
# it's a string
else
# not a string
end
end
或者,如果你有很多的類來檢查,一case
聲明:
def your_method(param)
case param
when String
# it's a string
when Array
# it's an array
when Rational
# it's a rational
# ...
else
# it's not any of these classes
end
end
它是由主叫方提供正確類型的參數。如果使用不支持類型的參數調用方法,則在Ruby中通常會引發ArgumentError
。例如:
def do_something_with_a_number(number)
raise ArgumentError, "you have to provide a number" unless number.is_a?(Fixnum)
...
end
檢查其類型。
這就是說,爲什麼?一般來說,你應該關心它的傾向,而不是它的類型。當某種東西與其類型聯繫在一起時,我通常會懷疑它。
+1。具體而言,'parameter.respond_to?(:method_i_want)'優於'parameter.is_a?(ClassIWant)'。 – Amadan
錯誤檢查。假設你的方法需要一個字符串,而一些白癡程序員傳遞一個數字。不可能使用強類型語言,可能喜歡Runy,PHP或Python。 –
@ DariuszG.Jagielski我不明白你想說什麼。我說要檢查它的類型,但是再一次,最好檢查它的接口。 –
- 1. 如何將方面定位到具有某種類型參數的方法?
- 2. 如何獲得某種類型的所有方法
- 3. 確保參數化類型具有特定方法
- 4. 一種保護Ruby數據類型的方法
- 5. 在Swift中,是否有一種確定枚舉是否基於某種類型(例如字符串)的方法?
- 6. Typescript:確保通用類型具有某個屬性
- 7. 在systemverilog中有一種方法可以對某種類型進行調節?
- 8. 在Ruby中實現一種類方法
- 9. 確保numpy數組中至少具有某種維度
- 10. 我如何列出具有某種類型的自定義帖子類型
- 11. 有兩種類型的Arraylist:如何確定第一種類型?
- 12. 如何在jQuery中找到具有某種背景色的類?
- 13. 如何獲得某種類型的方法
- 14. 如何在RavenDB中修補某種類型的所有文檔?
- 15. 有沒有一種方法可以讓Ruby與Clojure交談,反之亦然,跨越某種類型的橋樑?
- 16. 有沒有一種方法在Objective-C中具有類型安全的常量?
- 17. 方法來搜索所有控件,只挑出某種類型
- 18. 如何在Ruby中找出哪些類是一種方法?
- 19. Smalltalk - 有沒有一種方法來確定數據類型?
- 20. React有沒有找到某種類型的所有標籤或類的方法?
- 21. 類無法解析爲某種類型
- 22. 有沒有辦法在類中獲得某種類型的所有變量?
- 23. CloudKit:獲取具有某種記錄類型的所有記錄?
- 24. Linq找到所有具有某種類型的東西
- 25. 是否有某種方法可以在流中指定「不」類型?
- 26. 如何銷燬所有的子控件具有某種類型的
- 27. 如何將字符串值轉換爲某種具體類型?
- 28. ReSharper 5.1無法從任何地方導航到某種類型
- 29. C++ - 具有多種參數類型的方法
- 30. 如何檢查std :: variant是否可以保存某種類型
謝謝。 –