2015-05-15 3 views
0

Я хочу вернуть первый и последний элементы массива.Как отображать как первый, так и последний элементы массива?

def first_and_last(a) 
    a.first 
    a.last 
end 

но он отображает только последний элемент, и когда я помещаю знак плюса, он просто добавляет элементы. Я хочу напечатать что-то вроде этого [1,3]. Какие-либо предложения?

ответ

2
def first_and_last(a) 
    return a.first, a.last 
end 

или

def first_and_last(a) 
    return a[0], a[-1] 
end 
+0

Примечание: 'возвращение х, y' есть 'магия', чтобы сделать' вернуть [х, у] '. – user2864740

+0

Вы можете игнорировать обратный вызов. 'return x, y' может быть записано как' x, y' – Santhosh

+0

@Santhosh Я так не думаю, вы проверяете? – pangpang

3

Похоже, что вы хотите создать новый массив с двумя элементами, которые являются первыми и последними из аргумента, соответственно:

def first_and_last(a) 
    [a.first, a.last] 
end 

first_and_last([1,2,3]) # => [1, 3] 
first_and_last(1..100) # => [1, 100] 
4

Другим способом:

['cat', 'dog', 'pig'].values_at(0,-1) 
    #=> ["cat", "pig"] 
+0

Это может возвращать дубликаты или двойные 'nil' для массивов длиной 1 и 0, но в остальном, прямо на. – tadman

0
def first_and_last(a) 
    return [a.first, a.last] 
end 

в вашем коде вы не возвращаете никакого значения в ruby, если вы не возвращаете значение, а затем последняя строка после автоматического возврата. Таким образом, вы должны вернуться как Abobe

0

Если вы используете массив, Set, ActiveRecord, или какая-либо другая коллекцию, то вы должны сделать следующее:

def first_and_last(collection) 
    [ collection.first, collection.last ] 
end 

Примечания: Там нет необходимости в возвращении, потому что последний выполненный оператор в Ruby-методе - это то, что возвращается вызывающему методу. Далее, параметры должны быть направлены на выявление. То есть, другим должно быть легко понять, что это такое. В этом случае это набор (т. Е. Массив), который отвечает как первым, так и последним сообщениям.

Думайте иначе и код хорошо,

-Conrad

Смежные вопросы