0

method_oneifが値を返す場合はブレークし、そうでない場合は try と言うにはどうすればよいmethod_twoですか?

def ai_second_move(board)
  p "2nd move called"
  # TODO - how to say if method_one gives me a value, break, else method_two
  method_one(board)
  method_two(board) 
end
4

4 に答える 4

7

これを書くほとんどのRubyの方法は次のようになります:

method_one(board) || method_two(board)

||Rubyは、左側がfalseと評価された場合(nilまたはを返すことを意味する)にのみの右側を実行し、falseこの式の結果は次のようになります。method_two

于 2012-10-22T07:03:30.187 に答える
0

if - の使用

method_two(board) if method_one(board).nil?

使用しない限り -

method_two(board) unless !method_one(board).nil?

三項を使用 -

# This evaluates if (method_one(board) returns nil) condition. If its true then next statement is method_two(board) else return is executed next.
method_one(board).nil? ? method_two(board) : return
于 2012-10-22T07:00:08.877 に答える
0

を使用する必要がありますreturnbreakループ用です。

def ai_second_move(board)
  p "2nd move called"
  return if !!method_one(board)

  method_two(board) 
end

別の楽しい方法は

def ai_second_move(board)
  p "2nd move called"
  !!method_one(board) || method_two(board) 
end
于 2012-10-22T06:59:28.097 に答える
0

これも同様に機能します:

method_one(board) and return

returnステートメントは、真の値を返す場合にのみ実行されますmethod_one(board)

于 2012-10-22T07:17:23.617 に答える