如果一个空字符串是真的有什么好处?

saw*_*awa 5 ruby string boolean

在Ruby中,""关于条件,空字符串是真的.我看到很多人都在为这个事实而苦苦挣扎.Ruby on Rails blank?是尝试克服这个问题的一种尝试.另一方面,当这种说明变得方便时,并不是立即显而易见的.是否有任何用例,这个事实变得方便,否则会出现理论上的问题?

saw*_*awa 10

我想我想出了答案.可能是出于理论上的原因和效率的原因.理论上,在单个类的不同实例之间绘制一条线比在类之间绘制一条线更复杂,并且需要更多的计算.如果""是错误的,那么每当条件中存在字符串时,Ruby内部就必须检查字符串的长度.相反,如果真相只能由阶级来判断,那恰好就是这种情况,那么它就会更有效率.也许这也是为什么falsetrue不归入单一类Boolean但分别属于独立类的原因.

另一种可能性是,只有一个false和的实例nil,因此在Ruby内部处理它只需要检查指针/对象id,而字符串是可变的,并且需要更多的复杂性来检查空白.


dec*_*eze 5

减少被认为是的事物的数量是一件好事。它简化了语言,简化了布尔规则,使它们易于记忆和应用,从而减少了错误。

试想一下,在混乱PHP是:false00.0'0'''nullarray()都是falsey之后,每天都保持惊人的许多人。

如果要测试一个空字符串,请测试一个空字符串。您应该知道您的变量是包含字符串还是布尔值,并能够进行相应的测试。

  • 好吧,尤其是'0'(作为字符串的0)颇有争议。它不是一个“空”字符串,但被认为是“ false”。这似乎很武断。那为什么不使用''false'`(字符串“ false”)呢?因为那是一个*非空字符串*。因此规则是*非空字符串,除了'0'为假*。对于新手来说,这比解释为false和nil为false难得多。在PHP中,您必须真正考虑以下问题:*可能此函数可能返回一个空数组,而我真的希望这表示`false`吗?*或*这儿的输入可能为“ 0”且应为false `?* (2认同)
  • 也许是这样,但*我的*点是*越少越好*。Ruby 绘制的线非常接近可能的最小`false` 值集。它只是尽可能地坚持少即是多的哲学。`""` 没有成功。问马茨原因,没有人可以告诉你。 (2认同)