Tilendor
그는 물었다 12년 전
83

다른 브래킷에 루비 에서 무엇을 의미합니까?

39 의 차이점은, 루비, what& 's {}' 와 ' []'?

' {}' 코드 블록 및 해시 모두 사용되는 것으로 보인다.

[] '는' 대해서만 어레이에는?

이 것은 아주 죽여줬어 도쿠멘션 isn& # 39.

답변 6 개

컨텍스트로 따라 다릅니다.

  1. 스스로 때, 또는 [] '는 변수를 할당' 와 ' {}' tcpg 어레이에는 해시. 예:

a = [1.2,3] # 어레이에서는 b = {1 = &gt. 2) # 해시

  1. ' []' 에서 사용할 수 있는 맞춤형 방법을 셨으며 페치할 무시됨, 일반적으로 해시 (표준 라이브러리 설정 ' []' 즉 '의 해시 방법으로 동일합니까 페치할') &lt br>; 또한 규칙은 동일한 방법으로 사용되고 있다 '' 정적 클래스 메서드를 사용하여 만들 수 있는 방법으로 C #, Java. 예:

a = {1 = &gt. 2) # 생성하시겠습니까 해시보다 예: [1] # 2 (1) 는 같은 인쇄하십시오 앨페치 것이다.

이는 새로 만드는 방법을 해시라고 사용자 정의 클래스를 해시보다 [1.2,3.4] #

[해시보다 docs] 루비 참조 (http://www.ruby-doc.org/core-2) 이 마지막 .0/hash.html # 메서드입니다 캜 5b 5d) 의 예.

  1. 이것은 아마도 가장 까다로운 하나 - 구문 전달할 때, {}) '도' 블록 단지 메서드입니다 위부의 인수만 괄호.

괄호 없이 메서드를 호출할 때 이 곳에 쉼표를 넣을 수 있는 그림 아웃해야 살펴보고, 루비 인수만 끝 (괄호 입력한 적이 있는 세였으므로, 그들을)

39, & # 39 hello& 1.upto (2) {것이 특징이다. # # 39 의 블록 it&}

39, & # 39 1.upto &2 {hello& 됩니다. 구문 오류, 루비, t 알아낼 수 있는 기능을 can&} # # 39 args 끝

39, & # 39 hello& 1.upto 2 {것이 특징이다. # 쉼표를, 루비, 그 때문에 argument&quot 고말은 &quot} 에 표시되었는지 won& # 39, & # 39, 이 때문에 해시보다 - # 39 는 hello& 빗나갔다. # 39 는 유효함 해시라고 isn&.

the Tin Man
tokland
그는 9년 전 댓글을 달았습니다
2

때는기대어 참고: # [] # 페치할 정확히요 해시라고 해시라고 아니다. = {a &gt. 1, b = &gt. 2} 스페치 (c) 안드레스 호르: 키를 찾을 수 없습니다.

YoYoYonnY
그는 4년 전 댓글을 달았습니다
0

'c @tokland' 찾을 수 없습니다.

Tony
그는 3년 전 댓글을 달았습니다
0

규칙은 &quot, 또한 같은 방법으로 사용되고 있다 정적 클래스 메서드를 또는 C # 의 Java.&quot 만들 방법을 사용할 수 있습니다. 이것이 바로 그 답을 찾고 있었어요. 또한 uxfs 뭐한테 클래식 루비 대해서 가장 싫다. 루비 코드 읽는 요령을 세제곱밀리미터 불투명한 리틀이에요 알아야 한다.

[] '는' 로, 다른 명백하네 아직 사용을 위한 프로세서 및 방법 # # 호출하십시오 호출하십시오 한다. 이 싸움은 조금 복잡한 이 처음 접하게 됩니다. 그건 좀 더 일반적인 함수 호출 같은 것이 합리적 그 뒤에 있습니다.

E. g.

proc = Proc.new { |what| puts "Hello, #{what}!" }
meth = method(:print)

proc["World"]
meth["Hello",","," ", "World!", "\n"]

the Tin Man
Tilendor
그는 11년 전 댓글을 달았습니다
0

절대 있다는 것을 알고, 감사합니다!

일반적으로, you& # 39, re 정확하다. 중괄호 ({} 구한 것은 물론, 일반 스타일 '이 모든 문제를 해결할 수 있는 자주 사용되는' 블록 '/' 끝 ',' 한 줄로 관용으로충만하신 사용하는 대신 할 여러 흐름선.

대괄호의 ' []' 클래스 등 다양한 방법으로 사용되고, 디렉터리 및 혼동, 루비 클래스뿐만 문자열이어야 베니오 충분히 해시보다. 그래서:

Hash["key" => "value"]

이제 막 유효한 것으로 다음과 같습니다.

{ "key" => "value" }

[] 를 사용하는 대괄호의 초기화하려면 배열입니다. 이 문서의 경우 [] 의 초기화

ri Array::[]

중괄호 ({} 의 해시 초기화하지 데 사용됩니다. 이 문서의 경우 {} 의 초기화

ri Hash::[]

이 역시 같은 방법으로 대괄호의 일반적으로 사용되는 대부분의 핵심 루비 클래스뿐만 어레이이며 해시보다, 문자열 등을 요구한다.

있는 모든 방법을, [] &quot &quot 클래스뿐만 바뀌엇어요 액세스할 수 있습니다. 함께 정의된

ri []

또한 대부분의 메서드을 " [] = &quot. 셨으며 할당할 수 있는 방법 (예:

s = "hello world"
s[2]     # => 108 is ascii for e
s[2]=109 # 109 is ascii for m
s        # => "hemlo world"

중괄호, movd &quot 대신 사용할 수도 있습니다. end&quot. 블록 &quot 있는 것처럼, {. } ".

사례를 볼 수 있는 특수 초기화 대괄호의 또는 중괄호 기호를 사용할 수 있으며, 모든 사용 -) 는 다음과 같은

%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"

단, [] '방법' 자신의 클래스를 정의할 수 있습니다.

class A
 def [](position)
   # do something
 end

 def @rank.[]= key, val
    # define the instance[a] = b method
 end

end

the Tin Man

몇 가지 예입니다.

[1, 2, 3].class
# => Array

[1, 2, 3][1]
# => 2

{ 1 => 2, 3 => 4 }.class
# => Hash

{ 1 => 2, 3 => 4 }[3]
# => 4

{ 1 + 2 }.class
# SyntaxError: compile error, odd number list for Hash

lambda { 1 + 2 }.class
# => Proc

lambda { 1 + 2 }.call
# => 3

ms-ati
그는 9년 전 댓글을 달았습니다
0

람다 (λ) = {1} + 2 [] # &gt. 3