现在我有这个返回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很新,有没有人知道一种方法完成这个?提前谢谢!
答案 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
...因为返回实际上是一个数组。