0

私のこのコードをリファクタリングしようとしています:

test_cases.select{ |x| x.script && x.script.versions && !x.script.versions.empty? }

andandgemを使用します。基本的な使用法は、&&(したがって名前)をandandに置き換えることを示しているので、これを試しました:

test_cases.select{ |x| !x.andand.script.andand.script_versions.andand.empty? }

しかし、それはステートメント全体ではないようです(質問を書いているときにこれに気づきました)

これは、空を分離する必要があることを意味しますか?句?notをチェックするandand関数はありますか(最後のものだけですか?)

4

3 に答える 3

0

うまくいかないときxは、私は推測します。nil問題は、xが、、および->を返すnilためです。次に、これが誤って選択されます。ブール値の明示的なチェックを提案します。...empty?nil!niltruex

 test_cases.select { |x| x.andand.script.andand.versions.andand.empty? == false }

または、おそらく最後のandandなしで空白/現在を使用する方が良いでしょう:

 test_cases.select { |x| x.andand.script.andand.versions.present? }
 test_cases.reject { |x| x.andand.script.andand.versions.blank? }

注:ここでの問題とは関係ありませんが、「void」(プロキシされるべきではないと思う正当な値)としてのみ扱われるため、 Ickの方が多分終わったほうがいいです。nilfalse

于 2011-03-29T07:20:07.293 に答える
0

あなたはいつでもできる

test_cases.select{ |x| x.andand.script.andand.script_version } unless x.empty?

:のトピックについてはandand、私たちのプロジェクトで使用しており、私は一般的に非常に気に入っていますが、 を誤って使用すると、andand適切に対処する必要がある問題が隠される可能性があることがわかりました。多くの優れたツールと同様に、注意して使用する必要があります。

于 2011-03-29T06:44:19.527 に答える
0

私は実際にこの句を使用しましたが、うまくいきます:

test_cases.map{ |x| x.script.andand.versions && !x.script.versions.empty? }.none?

andand を 1 つだけ呼び出し、select の代わりに map を使用

于 2011-03-29T06:51:01.533 に答える