在Ruby和RoR中,我经常发现自己测试对象是否存在,然后对象的属性是否符合某些条件。像这样:ifparams[:id]&¶ms[:id].size==40...dostuffend有没有更有效的方法来做到这一点?像这样的东西:ifparams[:id].size==40rescuefalse但没有使用救援? 最佳答案 在Rails2.3中,您可以使用Object#try方法:ifparams[:id].try(:size)==40#dostuffendtry在nil上调用(带任何参数)时将返回nil。希望这是有道理的。
可以用ruby实现吗?variablename=trueifvariablenameputs"yes!"end代替这个variablename=trueifvariablename==trueputs"yes!"end编辑:还考虑拥有:variablename=0#whichcausedmyproblem我无法让它工作。ifpossible是这样的说法吗?我现在正在学习ruby,在PHP中是可能的,但我不确定如何在ruby中正确地做到这一点 最佳答案 当然可以除了nil和false之外的所有内容在ruby中都被视为t
例如,这需要4行,对于这样一个简单的操作来说空间太大了:ifsomething_is_trueputs'error'returnend这个是单行的,但看起来很笨拙。ifsomething_is_true;puts'error';return;end我们可以做类似的事情吗#itwouldbegreatifthiswouldworkbecauseitisshortandreadableputs'error'andreturnifsomething_is_true 最佳答案 我不确定为什么您认为空间如此宝贵以至于您的原始代码“太多了”。给
这可以重构为boolean值吗?board是一个数组,move是一个索引。position_taken?(board,move)应该返回false如果board[move]是"",""或nil但返回true如果board[move]是"X"或“O”。defposition_taken?(board,move)ifboard[move]==""falseelsifboard[move]==""falseelsifboard[move]==nilfalseelsetrueendend 最佳答案 由于您的正面案例越来越少,我会测试相反的情
我写过这样的东西,我从VisualBasic6.0知道的相同的if-else逻辑,但我确信有更好的“Ruby方式”来编写它。你能告诉我它在Ruby世界里会是什么样子吗?ifparams[:medication_name].nil?med_name='all'elsifparams[:medication_name]=='undefined'med_name='all'elsemed_name=params[:medication_name]end 最佳答案 有几种不同的方法可以简化它,例如:med_name=params[:medi
对于Ruby中的Hash,reject!和reject与delete_if有何不同?谁能用简单的代码片段解释它们之间的区别? 最佳答案 由于其他答案指的是Array#delete_if而不是Hash#delete_if,这似乎是你要问的,我想我应该澄清一下。正如其他人所指出的,reject和reject!的不同之处在于reject!版本就地修改哈希,而reject创建一个新的散列。同时,delete_if几乎与reject!相同。事实上,对于一个Array,reject!和delete_if完全是一样的。但是,对于Hash,它们略有
有没有类似这样的代码的快捷方式?deftestobj=get_from_somewhere()ifobjtrueelsefalseendend在Python中,我可以这样做:returnTrueifobjelseFalse 最佳答案 一个常见的Ruby习惯用法是:deftest!!get_from_somewhereenddoublebang将一个对象变成它的“bool等价物”:object='foo'!object#=>false!!object#=>true请注意,在Ruby中,与Python不同,只有false和nil在boo
这个条件有没有更好的写法?if(self.expense.nil?&&self.income.nil?)||(!self.expense.nil?&&!self.income.nil?)puts"test"end 最佳答案 您正在测试表达式是否都为真或都为假。试试这个:if(self.expense.nil?==self.income.nil?)你不关心它们是真还是假,只关心它们是一样的。 关于ruby-on-rails-更好的写if条件的方法,我们在StackOverflow上找到一个
我正在使用net-ldapgem搜索事件目录。我可以使用过滤器搜索用户:filter=Net::LDAP::Filter.eq("sAMAccountName","neil*")filter2=~Net::LDAP::Filter.eq("objectclass","computer")joined_filter=Net::LDAP::Filter.join(filter,filter2)ldap.search(:base=>treebase,:filter=>joined_filter)do|entry|putsentry.sAMAccountNameend这为我提供了sAMAcco
使用50个if-else语句对于一项操作来说是否过于耗费资源?我正在做这样的事情:ifteam.players.count>1assign_team_type(..)elsifteam.players.count>3assign_team_type(..)...etc....end此外,将50个if-else语句放在Controller内的create操作中而不是after_create方法是否更有效?还是改用caseswitch语句或完全避免使用它会更有效?编辑:感谢您的快速回复!该代码用于社区体育锦标赛,根据该队的球员人数分配球队。我正在尝试编写一些东西,根据添加到该团队的玩家数量