我曾经发现过一篇文章,介绍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. 评估和演示引用错误