2015-07-18 4 views
3

Мне нужно создать метод с именем first_and_last. Возьмите один аргумент - массив - и верните новый массив только с первым и последним объектами.Застрял на том, как использовать .first и .last в массиве

Моя попытка:

def first_and_last(a) 
    first_and_last = [1,2,3] 
    first_and_last.last.first 
end 

Вот где я запутаться, он также говорит, что мне нужна ниточка «а» и «D» вместе с номерами. Однако есть 3 числа и 4 строки. Я понял, 0 будет .first номеров.

describe "first_and_last" do 
     it "creates new array with numbers" do 
     expect(first_and_last([1,2,3])).to eq([1,3]) 
     end 
     it "creates new array with strings" do 
     expect(first_and_last(["a", "b", "c", "d"])).to eq(["a", "d"]) 
     end 
    end 

Я не получаю, как включать как 1,2,3 и строки "a", "b", "c", "d" в массив при использовании .first и .last

Благодаря впереди времени для вашей помощи!

+0

Что ваш вопрос? – sawa

+0

@sawa Вопрос подразумевается, но ясно. –

ответ

5
def first_and_last(array) 
    [array.first, array.last] 
end 
+0

Красивая ....... :) Ты читаешь мой разум! – Schylar

+0

Хорошо, workmanlike ответ. "Красивый?" Только для тех, кто увлечен Руби. Но все в порядке. –

+0

Отлично! Большое спасибо за помощь! –

4

Ваш вопрос непонятен. Вы можете реализовать его так.

def first_and_last(a) 
    a.values_at(0, -1) 
end 
1

Поскольку у вас уже есть правильный ответ из Мори, позволяет сломать, почему ваш код не работает

Ваш метод принимает один параметр, но вручную присвоить переменной first_and_last.

Когда вы вызываете .last на массив, он даст вам последний элемент, поэтому эта часть вашего кода несколько верна first_and_last.last. Но когда вы добавляете .first в переменную, вы на самом деле вызываете .first на FixNum, потому что последний элемент массива был числом. Проверьте codeacademy для более уроков по массивам

EDIT:

#ATTN ONE LINER AHEAD 
    #Credit to Mori.. 
    def first_and_last(a); [a.first,a.last]; end 
+0

Да, я на самом деле обучения через загрузочный лагерь и код, который они дали мне было: определение функции first_and_last (а) end' Так что я довольно смущен, почему они дадут мне один аргумент 'a' и скажут« .first »и' .last' –

+0

. Проверьте мои изменения. Возможно, они хотели получить что-то краткое. Функциональность, которую они хотят знать, если задать массив в качестве параметра, вы можете предоставить первый и последний элементы. – Schylar

+0

Я немного смутился, и вы сделали это намного проще. Спасибо за ваше время! –

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