Ruby - 如何仅检查方法的第一个返回值?

时间:2018-02-12 15:16:08

标签: ruby-on-rails ruby methods

现在我有这个返回3个不同数字的Ruby方法:

# Find integers s and t such that gcd(a,b) = s*a + t*b
# pre: a,b >= 0
# post: return gcd(a,b), s, t
def egcd(a, b)
  # let A, B = a, b
  s, t, u, v = 1, 0, 0, 1
  while 0 < b
    # loop invariant: a = sA + tB and b = uA + vB and gcd(a,b) = gcd(A,B)
    q = a / b
    a, b, s, t, u, v = b, (a%b), u, v, (s-u*q), (t-v*q)
  end
  [a, s, t]
end

我想只检查第一个返回值,a。

if egcd(ARGV[3].to_i, 128) != 1

所以这里的声明不起作用,因为它返回了3个值,我只是想检查第一个值是不是!= 1.我对Ruby很新,有没有人知道一种方法完成这个?提前谢谢!

3 个答案:

答案 0 :(得分:1)

获取数组的第一个值可以通过以下几种方式完成:

if egcd(ARGV[3].to_i, 128).first != 1

if egcd(ARGV[3].to_i, 128)[0] != 1

如果您只使用第一个值,我建议您重新编写程序以使其更直观。我也考虑完全重写这段代码,因为它根本不能很好地阅读。

答案 1 :(得分:0)

由于返回值是一个数组,请检查数组的第一个值是否不是1.

<body ng-controller="ListCtrl" ng-app="list"> <ul ng-repeat="product in products"> <li>{{product.name}} </li> <li>{{product.price.value}}</li> <li><button type = "button" ng-click = "add_cart(product)"> Add to cart</button></li> </ul><br> <ul ng-repeat = "cart in carts" ng-init = "setTotals(cart)"> <li>{{cart.p_name}}</li> <li>{{cart.p_price}}</li> <li><button type = "button" ng-click = "remove_cart(cart)">X</button> </li> </ul> <ul> <li>{{total}}</li> </ul> </body>

if egcd(ARGV[3].to_i, 128).first != 1

答案 2 :(得分:0)

你可以这样做:

if egcd(ARGV[3].to_i, 128)[0] != 1

...因为返回实际上是一个数组。