질문과 답변

Extra Form


a = []

 

a = [ @b=1,@c=1,@d=1,@e=1,@f=1]


이 함수를
 

a = [c=1,@d=1,@e=1,@f=1]

 

이 이렇게 바로 바꿀 수 있는 명령어가 있나요?



Who's Lighna

profile

스트레스 받는다.

Comment '2'
  • profile
    습작 2012.05.24 15:49
    배열에서 단순히 맨 첫번째 원소를 제거하는 것이라면 .shift 를 사용하면 됩니다.

    a.shift 

    하면 첫번째 원소값이 배열에서 제거될 테니 원하시는 모습이 나올 겁니다.


    a[0] = nil # 0번 인덱스에 nil 값을 대입

    a.compact! # 배열에서 nil값을 제거

    물론 이래도 되겠고,

    a.delete_at(0) # 0번 인덱스에서 원소를 제거


    이래도 되겠지요.

     


    하지만 원하신 것이 배열에서 첫번째 원소를 지우는 것이 아니라 @b값을 찾아서 지우는 것이면 조금 다릅니다.

    배열에서 특정 값을 찾아 지우는 것은 .delete() 이긴 합니다만, 이거 쓰면 같은 값이 다 날아가기 때문입니다.
    이 경우는 배열을 해시 처럼 쓸경우 생기는 문제입니다.
    배열에는 키값이 존재하지 않기 때문이지요.

    a = [ @b=1,@c=1,@d=1,@e=1,@f=1]

    라는 리스트는 

    a = [@b,@c,@d,@e,@f]

    가 아니라

    a = [1,1,1,1,1]

    이 되니까,

    a .delete(@b)

    해버리면

    a  == []

    이렇게 되어버릴 겁니다.

    반면, 해시를 사용하면 이런식이 되지요.

    a = { 'b' => 1, 'c'  =>  1, 'd'  =>  1, 'e'  =>  1, 'f'  =>  1}
    a .delete('b')

    a == { 'c'  =>  1, 'd'  =>  1, 'e'  =>  1, 'f'  =>  1} 


    지금 구현하시는 기능이 배열을 필요하시는 건지 해시를 필요 하시는 건지 잘 생각하시고 사용하시면 될 것 같습니다.^^


  • profile
    Lighna 2012.05.24 18:23
    궁금증이 한번에 해결됬네요, 감사합니다~~

List of Articles
종류 분류 제목 글쓴이 날짜 조회 수
공지 묻고 답하기 가이드 습작 2014.06.14 12455
Board Pagination Prev 1 ... 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 Next
/ 83