0

我怎么说如果method_one返回一个值,然后中断,否则尝试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(意味着它返回nilor )时才执行右侧false,然后此表达式的结果将是method_two

于 2012-10-22T07:03:30.187 回答
0

你需要使用return. break是for循环。

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_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

这也可以:

method_one(board) and return

return仅当method_one(board)返回真值时才执行该语句。

于 2012-10-22T07:17:23.617 回答