Tag: if statement

在Ruby中编写“匹配平衡括号”程序的更好方法

这个方法应该采用一个字符串并检测括号’(””””在字符串中是否与相应的(相对的)括号正确关闭)。 首先,是否有更优雅,更紧凑的方式来编写此位而不使用所有“或”s(||): split_array.each do |i| if (i == “{” || i == “(” || i == “[“) left.push(i) else (i == “}” || i == “)” || i == “]”) right.push(i) end end 我的第二个问题是,这段代码是否可怕(见下文)? 似乎我应该能够用更少的行来编写这个,但从逻辑上讲,我还没有提出另一个解决方案(但是。)代码适用于大多数测试,但是对于这个测试它返回false(参见所有的驱动程序测试) bottom):p valid_string?(“[(text){}]”)== true 任何批评都将不胜感激! (另外,如果有更好的部分发布,请告诉我)谢谢! def valid_string?(string) opposites = { “[” => “]”, “{” => “}”, “(” => “)”, “]” […]

条件“if”修饰符中的Ruby变量赋值

我有一个关于Ruby解释器如何分配变量的问题: 我经常使用这个: return foo if (foo = bar.some_method) some_method返回一个对象或nil。 但是,当我尝试这个: return foo if (true && (foo = bar.some_method)) 我得到:NameError:未定义的局部变量或方法foo for main:Object。 导致第二行出错的第一行和第二行之间的评估有何不同?

Ruby:IF语句中的Nils

我正在使用的rails应用程序中有以下非常难看的ruby代码: if params.present? if params[:search].present? if params[:search][:tags_name_in].present? … end end end 所有我想问的是是否已经定义了params [:search] [:tags_name_in],但因为params,params [:search]和params [:search] [:tags_name_in]可能都是nil,如果我使用… if params[:search][:tags_name_in].present? …如果没有参数或没有搜索参数,我会收到错误。 肯定有一个更好的方法来做到这一点……建议?