【发布时间】:2017-11-02 05:36:48
【问题描述】:
我正在做一个我在 rubeque.com 上找到的 ruby 挑战。以下是说明:
说明: 写一个方法#r_empty?如果散列及其子散列为空,则返回 true;如果散列中有值,则返回 false。
我的回答:
class Hash
def r_empty?
def recurse(h)
h.each {|key, value|
value.is_a?(Hash) ? recurse(value) :
if (value!=nil && value!="")
#puts value
return false
end
}
return true
end
recurse(self)
end
end
测试:
a = {:ruby => "", :queue => ""}
b = {:ruby => {:version => {:one => {"nine" => ""}, "two" => "=^.^="}},
:html => ""}
c = {:pets => {:dogs => {:my => {"niko" => ""}, "ollie" => ""}}, :cats =>
nil, :mice => ""}
d = {a: "", b: :two, c: ""}
答案:
a.r_empty?, true
b.r_empty?, false
c.r_empty?, true
d.r_empty?, false
({}.r_empty?), true
使用此代码,我能够在 5 次测试中得到 4 次的正确答案。我的方法为 b.r_empty 返回 TRUE? ...我确实注意到,如果我取消注释 #puts 值,“=^.^=”会为 b.r_empty 打印出来? ...所以 if 语句正在执行,但最终不返回 false 。我仍然是一名 ruby 新手,因此对于我应该为这个挑战进行的正确主题的任何建议和指导,我将很高兴。
【问题讨论】:
-
无法复制。
-
我的错,Class由于某种原因被大写了..所以它应该是class Hash {..rest of code..},如果还有问题请告诉我
标签: ruby