【问题标题】:Expressions in control statements控制语句中的表达式
【发布时间】:2012-01-01 01:47:54
【问题描述】:

我从未在 if 语句或其他控制结构(PHP 中的示例)中使用过以下类型的表达式:

if ( ( $p = someFunction() ) !== false ) {
        // Use $p
}

我通常会取出这种赋值表达式并在我在 if 语句中检查它之前对其进行评估。

我的问题是:

  • 这种技术有名称吗?
  • 赋值后 ($p = someFunction()) 可以测试哪些类型? (例如只有 true/false 或 someFuntion 返回的实际类型)?
  • 这是否被推荐并安全地用于大多数语言并期望类似的行为?

【问题讨论】:

  • 供您参考:PHP type comparisons table.
  • @ladaghini 哇,这些都是要记住的大表格;)
  • 请注意,使用严格相等运算符(===!==)时,必须仔细编码条件表达式。如我给出的链接所示,1 === TRUE 将评估为FALSE,尽管 1 具有“真实”值。 ===!== 不要测试“真实性”;他们测试同一类型内的相等性。如果你想保持一个值的真实性,试试echo !!$value。其他编程语言的真实性表可能不同。

标签: syntax programming-languages


【解决方案1】:

你可以使用赋值表达式的返回值来命名它吗?

为什么你一般会问这个?您必须检查您的语言是否支持这种代码。大多数类似 C 的语言返回分配给左侧变量的值,因此它可以是任何类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-29
    • 1970-01-01
    • 2011-10-04
    • 2010-12-28
    • 1970-01-01
    • 2011-03-19
    • 2011-03-28
    相关资源
    最近更新 更多