복붙노트

[RUBY-ON-RAILS] 루비 어레이 작성, VS Array.new []

RUBY-ON-RAILS

루비 어레이 작성, VS Array.new []

이 두 문장의 차이점은 무엇입니까? 내 레일 응용 프로그램에서 사용하고 같은 일을하는 것처럼 나에게 보인다

array_a = Array.new
array_b = []

해결법

  1. ==============================

    1.그 두 문은 기능적으로 동일합니다. 인수 및 블록을 취할 수 있지만 Array.new :

    그 두 문은 기능적으로 동일합니다. 인수 및 블록을 취할 수 있지만 Array.new :

    Array.new # => []
    Array.new(2) # => [nil,nil]
    Array.new(5,"A") # =>["A","A","A","A","A"]
    
    a = Array.new(2,Hash.new)
    a[0]['cat'] = 'feline'
    a # => [{"cat"=>"feline"},{"cat"=>"feline"}]
    a[1]['cat'] = 'Felix'
    a # => [{"cat"=>"Felix"},{"cat"=>"Felix"}]
    
    a = Array.new(2){Hash.new} # Multiple instances
    a[0]['cat'] = 'feline'
    a # =>[{"cat"=>"feline"},{}]
    squares = Array.new(5){|i|i*i}
    squares # => [0,1,4,9,16]
    
    copy = Array.new(squares) # initialized by copying
    squares[5] = 25
    squares # => [0,1,4,9,16,25]
    copy # => [0,1,4,9,16]
    

    참고 : 루비 1.9 프로그래밍에서 가져온 위의 예

  2. ==============================

    2.[]는 Array 클래스의 싱글 방법에 대한 바로 가기입니다 [] 아마 당신은 너무 많은 걱정없이 '들은이 같은'말할 수 있도록 차례로, Array.new처럼 같은 방법으로 새로운 배열을 작성한다.

    []는 Array 클래스의 싱글 방법에 대한 바로 가기입니다 [] 아마 당신은 너무 많은 걱정없이 '들은이 같은'말할 수 있도록 차례로, Array.new처럼 같은 방법으로 새로운 배열을 작성한다.

    IRB에서] [호출 할 때마다 새로운 배열을 작성합니다 :

    >> [].object_id
    => 2148067340
    >> [].object_id
    => 2149414040
    

    루비의 C 코드에서 :

    rb_define_singleton_method(rb_cArray, "[]", rb_ary_s_create, -1);
    
  3. ==============================

    3.차이는 근본적으로 없다

    차이는 근본적으로 없다

  4. ==============================

    4.이러한 Hash.new 등 대 {}. 그들은 동일합니다. 속도를 포함합니다.

    이러한 Hash.new 등 대 {}. 그들은 동일합니다. 속도를 포함합니다.

  5. ==============================

    5.다른 사람은 이미 대답 것처럼

    다른 사람은 이미 대답 것처럼

    그러나 (코드를 쉽게 읽을 수 있도록) 각 하나를 사용해야의 방향에 대한 지침이 있습니다. 그 뒤에 그 이유는 :

    에서: https://github.com/rubocop-hq/ruby-style-guide#literal-array-hash

    그래서 당신은] 하늘의 배열을 [만드는 경우가 최선의 선택이지만 Array.new (N)를 작성해야 무엇보다, 객체 전무 N의 세트로 배열을 작성해야합니다.

  6. from https://stackoverflow.com/questions/4601652/ruby-array-creation-array-new-vs by cc-by-sa and MIT license