1

ブロックしない限り/ifを使用する必要がある場合、コードが非常に長くなる可能性があります。これはまったく見栄えがよくありません。私の質問は、この種の状況をどのように処理するかです。たとえば、この仮説の場合の適切なフォーマットは何ですか?

if some_array.each.all? {|argument| argument.method_one == @some_value} && another_array.method_two == @completely_different_value

    #
    #some stuff here
    #

end
4

3 に答える 3

1

あなたはそれをいくつかの行に分けることができます。このフォーマットの方が読みやすいと思います

result1 = some_array.each.all? { |argument| argument.method_one == @some_value }
result2 = another_array.method_two == @completely_different_value
if result1 && result2
  #
  #some stuff here
  #
end
于 2013-03-01T07:02:02.373 に答える
0

パーツを変数に抽出することをお勧めします

condition1 = some_array.each.all? do |argument|
  argument.method_one == @some_value
end

condition2 = another_array.method_two == @completely_different_value

if condition1 && condition2
    #
    # some stuff here
    #
end

または条件をメソッドにする

def condition1?(arr)
  arr.some_array.each.all? do |argument|
    argument.method_one == @some_value
  end
end

def condition2?(arr)
  arr.method_two == @completely_different_value
end

if condition1?(some_array) && condition2?(another_array)
    #
    # some stuff here
    #
end

メソッドに抽出することには、コードのテストが一般的に簡単になるという利点があります。

于 2013-03-01T12:37:57.617 に答える
0

タスクを実行する方法はたくさんあります。

最も一般的な方法は、シェルプロンプトの場合と同じように円記号を使用することです。

if some_array.each.all? { |argument| \
    argument.method_one == @some_value \
  } \
  && another_array.method_two == @completely_different_value \

 puts a
end  

また、sで静かに行を分割することもできます( Ruby <1.9の場合は行末、Ruby 1.9以降の場合も次の行の先頭dotにドットを配置する必要があります)。

"foo bar baz".
  reverse.
  split.
  map(&:capitalize).
  join ' '
# ⇒ "Zab Rab Oof"
于 2013-03-01T07:38:10.120 に答える