2012-05-02 38 views
17

Tôi đang đấu tranh để hiểu sự khác biệt giữa: biểu tượng và văn bản: liên quan đến vị trí kết tràng. Sự hiểu biết của tôi là khi chúng ta sử dụng: biểu tượng chúng ta đang đề cập đến đối tượng này và bất cứ thứ gì nó chứa, ở đâu là văn bản: được sử dụng để gán một giá trị cho văn bản như chúng ta sẽ là một biến. Đây có phải là chính xác hoặc có thể ai đó giải thích về cách sử dụng. Cảm ơn bạn.Sự khác biệt giữa vị trí ruột kết trong: cái gì đó và cái gì đó:

+1

Symbol: Giá trị chỉ xuất hiện trong biểu băm như một cách để rút ngắn nó nhưng tôi không tìm thấy nhiều người ủng hộ nó. – texasbruce

Trả lời

18

:whatever là một biểu tượng, bạn đã có một phần phù hợp.

Khi bạn đang sử dụng một hash, đây là cách bạn sử dụng để định nghĩa nó trong 1,8x ruby:

{:key => value, :another_key => another_value} 

này được gọi là cú pháp hashrocket. Trong ruby ​​1.9x, điều này đã thay đổi để:

{key: value, another_key: another_value} 

Có khả năng tương thích ngược mà vẫn sẽ được tải cú pháp hashrocket ... Nhưng, trong 1,9, 'chính:' là một biểu tượng

+2

Cảm ơn bạn đã đánh giá cao! – Tom

+2

Câu lệnh cuối cùng của bạn sẽ gây nhầm lẫn .. Tôi không nghĩ rằng 'khóa:' là một biểu tượng trong ruby, nhưng khi cú pháp này xuất hiện bên trong dấu ngoặc, ruby ​​xác định nó là một biểu tượng. Cú pháp hashrocket không chỉ được cung cấp cho khả năng tương thích ngược. Infact, nếu bạn muốn xác định một băm với các phím không phải biểu tượng, bạn cần phải dựa vào cú pháp tên lửa băm. Tôi sẽ nói cú pháp kiểu json mới có nhiều đường cú pháp hơn. – rubyprince

17

các {:key => value} là cú pháp băm cũ trong ruby, bây giờ chúng ta có một cú pháp băm mới mà là giống như json để

{:key => value} 

cũng giống như

{key: value} 

Một tuổi, chúng ta đều quen thuộc với là:

old_hash = {:simon => "Talek", :lorem => "Ipsum"} 

này là tất cả tốt đẹp và dandy, nhưng nó có thể đơn giản hơn và sạch hơn. Kiểm tra Ruby 1.9 phong cách, nó loại giống JSON:

new_hash = {simon: "Talek", lorem: "Ipsum"} 

Nhưng bây giờ bạn nhìn gần hơn và hỏi: “Nhưng trước đó chìa khóa là một biểu tượng rõ ràng, có chuyện gì với điều này bây giờ?”.

Bạn nói đúng, ký pháp mới là loại đường cú pháp cho kiểu băm thông dụng nhất, biểu tượng được gọi là đối tượng băm. Nếu bạn làm điều này trong IRB, bạn sẽ thấy ruby ​​trả lại băm trường cũ, với các biểu tượng được sử dụng như phím:

> new_hash = {simon: "Talek", lorem: "Ipsum"} 
=> {:simon=>"Talek", :lorem=>"Ipsum"} 

Nếu bạn cần phải có đối tượng tùy ý như phím băm, bạn vẫn sẽ phải để làm điều đó trường học cũ.

ref: http://breakthebit.org/post/8453341914/ruby-1-9-and-the-new-hash-syntax

Các vấn đề liên quan