我曾經發現過一篇文章,介紹PHP和Ruby如何處理與特定測試條件(即:isempty,isset等)匹配的不同類型的變量。他們有什麼不同?Ruby和PHP在評估引擎中有何不同?
1
A
回答
2
PHP/empty
幾乎是相同的Ruby等效,empty?
對於導軌的字符串,則blank?
方法優選empty?
# this is PHP
$bob = array(); # empty($bob) => true
$bob = array("cat"); # empty($bob) => false
$bob = null; # empty($bob) => true
$bob = "boo" # empty($bob) => false
$bob = ""; # empty($bob) => true
# this is Ruby
[].empty? # => true
[ "cat" ].empty? # => false
nil.empty? # => NoMethodError
"boo".empty? # => false
"".empty? # => true
PHP/isset可以與對象的has_key更換?爲哈希對象。對於一般的局部變量用法,當代碼中引用變量時,Ruby實例化變量爲nil,因此唯一容易檢查的是它們是否爲零?
編輯
您也可以使用關鍵字defined?
複製的isset
PHP的使用局部變量。
#PHP
isset($bob); # => false
$bob = "foo";
isset($bob); # => true
$bob = array();
isset($bob['cat']); # => false
$bob = array('cat' => 'bag');
isset($bob['cat']); # => true
isset($bob['dog']); # => false
#Ruby
bob # => nil
defined?(bob) # => false
bob.nil? # => true
bob = "foo"
bob # => "foo"
bob.nil? # => "false"
bob = {}
bob.has_key? :cat # => false
bob = { :cat => 'bag' }
bob.has_key? :cat # => true
有一點要小心:在PHP中,一個空字符串或數字0將評估爲false在if
聲明。在Ruby中,只有nil
和false
在if語句中計算爲false。這需要增加兩個更多的布爾查詢方法,blank?
和zero?
。這些方法作爲Rails應用程序的一部分混合到String類中。它們的獨立版本可以在Facets上找到。
-1
這是一個非常複雜的問題。 Ruby和PHP之間的一個主要區別是Ruby(大部分)是strongly typed,而PHP是非常弱的類型。
相關問題
- 1. 評估在Ruby中
- 2. PhP和java評估嵌套? :不同
- 3. SpringEL引擎VS評估布爾文字
- 4. 是否有任何XACML評估引擎實現?
- 5. 搜索引擎如何評估其結果的有用性?
- 6. 在線數學編輯器和評估引擎
- 7. CasperJS(SlimerJS引擎),在評估後步驟不會繼續
- 8. PHP Eval,評估HTML和PHP
- 9. Ruby:減速評估
- 10. Ruby實例評估
- 11. 精確和召回評估推薦引擎
- 12. 如何使用trec_eval評估搜索/檢索引擎?
- 13. 在ASP.NET Web請求期間評估IronPython腳本;靜態引擎
- 14. Ruby on Rails和Rails引擎
- 15. 評估和/或在Tomcat中
- 16. Haml不評估嵌入式Ruby代碼
- 17. Ruby&Rules引擎
- 18. Rails引擎與ruby gem有什麼不同?
- 19. 爲什麼AsyncPipe在{{}}評估不同,* ngIf
- 20. php中的賦值評估
- 21. Ruby如何評估雙引號(又名「」)與String.new?
- 22. PHP懶惰評估
- 23. PHP SOAP Array評估
- 24. 紅寶石評估沒有評估?
- 25. Tensorflow評估:評估所有圖像
- 26. 在Android中使用腳本引擎管理器來評估中綴表達式
- 27. 懶惰評估「#{}」 - ruby中的字符串
- 28. SymPy:評估和
- 29. 谷歌雲ML引擎「由於相同檢查點跳過評估」
- 30. 評估和演示引用錯誤