代码之家  ›  专栏  ›  技术社区  ›  mopoke

Ruby-换行符和运算符

  •  11
  • mopoke  · 技术社区  · 14 年前

    请考虑以下代码:

    x = 4
    y = 5
    z = (y + x)
    
    puts z
    

    如您所料,输出为 9 . 如果引入新行:

    x = 4
    y = 5
    z = y
    + x
    
    puts z
    

    然后输出 5 . 这是有意义的,因为它被解释为两个独立的语句( z = y +x )

    但是,如果括号中有换行符,我不理解它是如何工作的:

    x = 4
    y = 5
    z = (y
    + x)
    
    puts z
    

    输出是 4 . 为什么?

    3 回复  |  直到 14 年前
        1
  •  12
  •   Anon.    14 年前

    (免责声明:我根本不是Ruby程序员。这只是一个疯狂的猜测。)

    有了帕伦斯,你会 z 被赋予

    y
    +x
    

    它计算出最后一条执行语句的值。

        2
  •  4
  •   Kevin    14 年前

    以\结束行,以便在下一行继续表达式。这将提供正确的输出:

    x = 4
    y = 5
    z = (y \
      + x)
    puts z
    

    输出9

    我不知道为什么结果是出乎意料的,而没有摆脱新线。我只是学会了永远不要那样做。

        3
  •  3
  •   Roman Gonzalez    14 年前

    你不需要逃跑的角色 \ 如果你的线路和接线员接通了

    a = 4
    b = 5
    z = a +
        b
    
    puts z 
    # => 9