Ruby可以什么都不返回?

ruby可以不归还吗?

仅用于教育目的

例如:

myarray = [1,2,3] myarray < 15 return "Trololo" else return __NOTHING__ end end 

因此,如果今天是3月11日, myarray将不会添加新项目。 我不想要nil – 因为nil不是没有:)

我明白, if | unless ,我可以使用 if | unless声明像myarray << some_method if some_method等我想了解我可以什么都不返回或者每次都在ruby中我返回的东西 (至少我能得到的是Nil Object)

基本上,你要找的是一个声明 。 但Ruby没有语句,只有表达式一切都是表达,即一切都返回一个值。

不,你什么都不能回报。 在ruby中,你总是会返回一些东西(即使它只是nil ) – 没办法。

你不能从ruby中的方法返回“nothing”。 正如您所指出的,您可以有条件地向arrays添加元素。 您还可以在数组上调用.compact以删除所有nil元素。

你不能用Ruby回归真正的东西。 一切都是对象。 但你可以创造一个假的无所事事。 看到:

 Nothing = Module.new # Same as module Nothing; end class Array alias old_op_append << def <<(other) if other == Nothing self else old_op_append(other) end end end 

这很丑,但适用于您的样本。 (没有什么是对象。)

没有什么比我所知道的任何东西都没有任何意义:)你可以尽可能地定义自己的东西并尽可能地抛出它。 在ruby中,如果您没有显式返回某些内容,则返回最后一个计算表达式。

您可以使用例外模拟Nothing。

 class NothingError < RuntimeError end def nothing raise NothingError end def foo x if x>0 then x else nothing end end def nothingness begin yield rescue NothingError end end a = [1,2,3] nothingness { a << foo(4) } nothingness { a << foo(0) } 

然而,可能不是一个好主意......