回答
這是一種代碼風格約定;它表示一個方法返回一個布爾值。
問號是方法名稱末尾的有效字符。
謝謝,但這種約定意味着它只有_logic或可能有副作用嗎?有趣的是,這是如何繞着代碼中的返回類型的類型化語言進行破解的。 – Jason 2012-11-20 21:36:10
這種情況嚴格地說是一種方法命名約定。沒有布爾返回值的強制執行。只是因爲方法名以問號結尾並不意味着方法*必須*返回一個布爾值......但它絕對是*應該*返回一個布爾值。然而,在Ruby中有'?'的其他用法(是一個三元運算符,將字符轉換爲ASCII整數,在'test'中的用法,RegEx中等等),其他答案中涵蓋了其中的許多內容這裏。 – 2015-09-11 20:36:39
@Jason FYI,甚至強類型語言都有這樣的約定。例如,在Java中,返回布爾值的方法通常以「is」爲前綴,如'isEmpty()','isDigit()'等。在Ruby中,相同的方法將被寫爲'empty?', '數字?'這是比較好的海事組織。 – Ajedi32 2015-12-28 17:27:50
這是Ruby中的一個約定,即返回布爾值的方法以問號結束。沒有比這更重要的了。
我相信這只是布爾事物的約定。有點像說「IsValid
」。
特別簡潔和真棒評論「有點像說」IsValid「 – 2016-04-05 21:00:27
在您的例子
product.valid?
實際上是一個函數調用,並調用一個名爲valid?
功能。按照慣例,某些類型的「條件測試」/布爾函數具有問號作爲函數名稱的一部分。
answer.gsub!(/ function /,'method' ) – 2009-08-28 10:28:02
好評... lolz – 2009-08-31 19:33:11
在你的例子中,它只是方法名稱的一部分。在Ruby中,您還可以在方法名稱中使用感嘆號!
Ruby中問號的另一個例子是三元運算符。
customerName == "Fred" ? "Hello Fred" : "Who are you?"
爲了擴大Andy的回答,你還會看到諸如:customerName == user.logged_in??user.name:「你是誰?」請注意雙重問號 – 2009-08-28 09:13:29
它也正則表達式使用的,意思是「在前面的字符的最一個重複」
例如正則表達式匹配/hey?/
與琴絃「he
」和「hey
」。
這也與test方法的第一個參數使用一個共同的約定從Kernel#test
irb(main):001:0> test ?d, "/dev" # directory exists?
=> true
irb(main):002:0> test ?-, "/etc/hosts", "/etc/hosts" # are the files identical
=> true
它與'test'無關,''d'是''d''的快捷方式。'' test'接受一個字符串作爲第一個參數,所以你可以用'test?d,「/ dev」'或'test「d」,「/ dev」'來調用它。 – bfontaine 2015-04-24 17:54:27
這可能是值得指出的是,?的只允許在方法的名稱,而不是變量。在學習Ruby的過程中,我假設?指定一個布爾返回類型,所以我試圖添加它們來標記變量,導致錯誤。這導致我錯誤地認爲有一段時間涉及到一些特殊的語法。
相關:在函數結束Why can't a variable name end with `?` while a method name can?
- 1. 逗號運算符是什麼意思?
- 2. 什麼是C#中的問號運算符的意思?
- 3. Ruby中的「 - >」運算符是什麼意思?
- 4. >?=運算符是什麼意思?
- 5. <>運算符是什麼意思
- 6. | =運算符是什麼意思?
- 7. ,運算符是什麼意思?
- 8. &運算符是什麼意思?
- 9. 「<>」運算符是什麼意思?
- 10. python < - 運算符:是什麼意思?
- 11. 〜>運算符是什麼意思?
- 12. &符號是什麼意思?
- 13. 符號「⊇」是什麼意思?
- 14. 問號是什麼意思?
- 15. 方括號內的C++運算符是什麼意思?
- 16. 帶數字的星號(*)運算符是什麼意思?
- 17. 關於算法的運行時間,「〜」符號是什麼意思?
- 18. 什麼是「:*」(冒號星號)在Ruby中是什麼意思?
- 19. 語句中的問號和冒號是什麼意思?這是什麼意思?
- 20. Linux中的符號^ \意思是什麼
- 21. TSQL中的「#」符號是什麼意思?
- 22. JavaScript中的$符號是什麼意思?
- 23. PowerShell中的&符號是什麼意思?
- 24. JSP中的$符號是什麼意思
- 25. Javascript中的符號「:」是什麼意思?
- 26. 「Decimal?」中的問號是什麼?意思?
- 27. 這是什麼意思[:-ge:意外的運算符,在bash中?
- 28. 符號「#!」是什麼意思?在Python中的意思是?
- 29. 在R中「:=」符號是什麼意思?
- 30. URL中的問號(?)和&符號(&)是什麼意思?
問號是不是一個運營商,這是一個普通的字符。問號和冒號一起是一個三元條件操作符。問號本身是一個單引號運算符。請參閱http://stackoverflow.com/questions/16641205/what-does-the-unary-question-mark-operator-do – 2017-01-07 02:01:39