为什么 x-- 是一个有效的 ruby 语句,但它什么也没做?

爱克斯

我知道 ruby​​ 不像 C 那样支持整数递增x++或递减x--但是当我使用它时,它什么也不做,也不会抛出错误。为什么?

编辑:

抱歉,我实际找到的代码是 using --x,略有不同,但问题仍然存在:为什么?

x = 10
while --x > 0
  y = x
end
托尼阿拉

编辑:回答 OP 关于它实际上是 --x 的评论

在 Ruby 中,运算符是方法--x、x++、x== 等都可以做完全不同的事情。--并且++它们本身不是有效的运算符。它们是运算符的组合。

对于您提供的代码,--x-(-x).

如果x = 5,那么-x == -5--x == 5

---x会是-(-(-x)),依此类推。


x--在技​​术上是有效的,具体取决于下一行代码包含的内容。

以下是有效的,例如:

  def my_func
    x = 1
    y = 10
    x--
    y
  end

那将被解释为x - (-10). 结果没有被分配给任何值,因此该x--行似乎什么都不做,函数只会返回y

您甚至可以nil在函数的最后一行出现,并且在某些工具中不会出现语法错误,但在调用函数时会出现运行时错误。

x--仅靠其本身是无效的。它需要一个数字参数来跟随它。该论点可以在下一行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么一个受保护的Android:在活动的onClick方法真的有效么?

为什么有效载荷RecyclerView” onBindViewHolder是一个列表?

为什么“ 2 + x = 7”有效的Haskell?

JMockit-期望与MockUp <T>为什么一个有效而另一个无效?

为什么一个查询有效,而另一个无效?

为什么这是一个有效的比较

(Ruby)为什么有效?

在Haskell中,为什么这是一个有效的表达式?

以下版本几乎相同,那么为什么只有一个有效?

为什么此代码在ruby 1.8而不是ruby 1.9中有效?

为什么我的第一个snippit有效,而我的第二个却无效?

两个DateTime:一个有效,为什么另一个不起作用?

为什么只有第一个导入的模块有效而其余的不能运行

为什么我的arraylist的一个迭代有效,而另一个无效?

为什么第一个代码有效而第二个代码无效?

为什么这些日期命令之一有效而另一个无效?

在EaselJS中添加一个阶段。一种有效,一种无效。为什么?

为什么不别名foo ='echo“这是一个引号:\'”'有效?

动态创建的范围表格,只有最后一个范围有效,为什么?

Python3:比较一堆变量的有效方法是什么,如果其中一个比较失败,X 否则 Y?

为什么一个 php 语句有效而另一个无效?

两个绑定;一个有效,另一个无效。为什么?

为什么一个 PHP 代码有效而另一个无效?

Powershell 拆分字符串 - 一个有效,一个无效。为什么?

这似乎不是一个有效的功能。为什么?

为什么我的 if 和 elif 语句一次只对一个按钮有效?

只有一个媒体查询有效,但我不知道为什么

为什么递归的例子之一有效而一个无效?请解释其工作原理

如果字符串少于 x 个字符,从字符串中删除最后一个单词的最有效计算方法是什么?