배열을 다른 배열이나 해시로 푸는 방법을 찾으려면 몇 시간을 보냈습니다. 이 질문의 형식이 조금 지저분하면 사전에 사과하십시오. 내가 StackOverflow에 대한 질문을 한 것은 이번이 처음이므로 내 질문의 스타일을 올바르게 잡으려고합니다.Ruby를 사용하여 배열을 다른 배열로 푸시하고 대괄호를 반환하십시오.
이class TestNAME < Test::Unit::TestCase
def test_directions()
assert_equal(Lexicon.scan("north"), [['direction', 'north']])
result = Lexicon.scan("north south east")
assert_equal(result, [['direction', 'north'],
['direction', 'south'],
['direction', 'east']])
end
end
내가 함께 왔어요 가장 간단한 것은 다음과 같습니다 :
나는 다음과 같은 시험 장치의 과거를 만들기 위해 코드를 작성해야합니다. 첫 번째 부분은 통과하지만 rake test
을 실행하면 두 번째 부분이 예상 결과를 반환하지 않습니다.
대신 또는 반환 :
을[[ "방향", "북쪽"], [ "방향", "남쪽"], [ "방향", "동쪽"]]
이 반환 것 :
[ "북쪽", "남", "동쪽"]
y의 결과를 콘솔에 문자열로 출력해도 다른 어레이에 포함되지 않은 별도의 어레이가 3 개 있습니다 (아래 참조). 배열의 가장 바깥 쪽 대괄호를 인쇄하지 않은 이유는 무엇입니까? y? 이에 대한 모든 의견이 많이 이해할 수있을 것이다
class Lexicon
def initialize(stuff)
@words = stuff.split
end
def self.scan(word)
if word.include?(' ')
broken_words = word.split
broken_words.each do |word|
x = ['direction']
x.push(word)
y = []
y.push(x)
end
else
return [['direction', word]]
end
end
end
: 아래
["direction", "north"] ["direction", "south"] ["direction", "east"]
내가 위의 테스트 유닛을 통과하기위한 시도로 작성한 코드입니다. 미리 감사드립니다.
정말 고마워요! 나는 '수집'에 대해 몰랐다. 매우 유용한 방법! –
['Enumerable'] (http://ruby-doc.org/core-2.1.4/Enumerable.html) 모듈은 이와 같은 유용한 메소드로 가득차 있기 때문에 Ruby를 배우는 데 시간을 할애해야합니다. 그. 일부는 매우 편리합니다. – tadman