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) }
然而,可能不是一个好主意......