루비에서의 차이 무엇 {}
과 []
?
{}
코드 블록과 해시 모두에 사용되는 것 같습니다.
있습니다 []
만 배열에 대해?
문서가 명확하지 않습니다.
답변:
상황에 따라 다릅니다.
자체적으로 또는 변수에 할당 할 때 []
배열을 {}
만들고 해시를 만듭니다. 예 :
a = [1,2,3] # an array
b = {1 => 2} # a hash
[]
사용자 정의 메소드로 재정의 할 수 있으며 일반적으로 해시에서 항목을 가져 오는 데 사용됩니다 (표준 라이브러리 []
는와 동일한 해시에 대한 메소드로 설정 됨 fetch
) 동일한
클래스 메소드로 사용되는 규칙도 있습니다. static Create
C # 또는 Java에서 메소드를 사용할 수 있습니다 . 예 :
a = {1 => 2} # create a hash for example
puts a[1] # same as a.fetch(1), will print 2
Hash[1,2,3,4] # this is a custom class method which creates a new hash
마지막 예제 는 Ruby Hash 문서 를 참조하십시오 .
이것은 아마도 가장 까다로운 것 일 것입니다-
{}
또한 블록에 대한 구문이지만 인수 괄호 밖의 메서드에 전달 될 때만 가능합니다.
괄호없이 메서드를 호출하면 Ruby는 쉼표를 넣은 위치를 확인하여 인수가 끝나는 위치 (입력 한 괄호가 있었던 위치)를 파악합니다.
1.upto(2) { puts 'hello' } # it's a block
1.upto 2 { puts 'hello' } # syntax error, ruby can't figure out where the function args end
1.upto 2, { puts 'hello' } # the comma means "argument", so ruby sees it as a hash - this won't work because puts 'hello' isn't a valid hash
:c
를 찾을 수 없습니다
대괄호 []는 배열을 초기화하는 데 사용됩니다. 이니셜 라이저 케이스 []에 대한 문서는
ri Array::[]
중괄호 {}는 해시를 초기화하는 데 사용됩니다. {}의 이니셜 라이저 케이스에 대한 문서는
ri Hash::[]
대괄호는 또한 일반적으로 Array, Hash, String 등과 같은 많은 핵심 루비 클래스에서 메서드로 사용됩니다.
"[]"메소드가 다음과 같이 정의 된 모든 클래스 목록에 액세스 할 수 있습니다.
ri []
대부분의 메서드에는 다음과 같이 할당 할 수있는 "[] ="메서드도 있습니다.
s = "hello world"
s[2] # => 108 is ascii for e
s[2]=109 # 109 is ascii for m
s # => "hemlo world"
블록에서 "do ... end"대신 "{...}"와 같이 중괄호를 사용할 수도 있습니다.
사용 된 대괄호 또는 중괄호를 볼 수있는 또 다른 경우는 다음과 같이 기호를 사용할 수있는 특수 이니셜 라이저입니다.
%w{ hello world } # => ["hello","world"]
%w[ hello world ] # => ["hello","world"]
%r{ hello world } # => / hello world /
%r[ hello world ] # => / hello world /
%q{ hello world } # => "hello world"
%q[ hello world ] # => "hello world"
%q| hello world | # => "hello world"