2011-03-14 34 views
22

Trong bài đăng của Matt về drying up cucumber tests, Aslak suggests những điều sau đây.% {} làm gì trong Ruby?

Khi tôi có rất nhiều dấu ngoặc kép, tôi thích điều này:

Với% {Tôi nhập “# {User.first.username}” trong “username”}

là gì Cấu trúc %{CONTENT} được gọi là? Liệu ai đó có thể nhắc đến nó trong một số tài liệu? Tôi không chắc chắn làm thế nào để tìm kiếm nó lên.

Ngoài ra còn có nội dung về %Q. Điều đó có tương đương với chỉ % không? Điều gì của các dấu ngoặc nhọn? Bạn có thể sử dụng dấu ngoặc vuông? Chúng có hoạt động khác nhau không?

Cuối cùng, cấu trúc #{<ruby stuff to be evaluated>} được gọi là gì? Có một tham chiếu đến điều đó trong tài liệu ở đâu đó không?

Trả lời

14
  1. "Phần trăm literals" thường là một cách tốt để google một số thông tin:

  2. #{} được gọi là "chuỗi suy".

+0

Nếu bất kỳ của những giải thích với '% { 'trong' Với% {Tôi nhập “# {User.first.username}” trong “username”} 'nào tôi couldn' t tìm thấy nó. Có phải '% {' là lỗi đánh máy hoặc một phần của DSL Cucumber không? –

+2

Nó tương đương với một chuỗi được trích dẫn kép, ngoại trừ việc bạn không phải thoát khỏi các dấu ngoặc kép bên trong (nghĩ rằng 'Given 'tôi nhập \" # {User.first.username} \ "trong \" username \ "" ' –

+1

Rất hay để biết về phần trăm chữ, ký tự mở và đóng có thể gần như bất cứ điều gì. Vì vậy, '% {Some text}', '% [Some text]' nhưng cũng '% # Một số văn bản #' và '% 'Một số text'' và thậm chí '%% Một số văn bản%' –

8

#{1+1} được gọi là String Interpolation.

Tôi và Wikibooks, tham khảo công cụ % chỉ là "ký hiệu%". Reference here. Ký hiệu % nhận bất kỳ dấu phân cách nào, miễn là ký tự không phải là chữ và số. Nó cũng có thể dùng các công cụ sửa đổi (giống như cách biểu thức thông thường có các tùy chọn), một trong số đó, đủ thú vị, là liệu bạn có cho phép nội suy chuỗi #{} kiểu (điều này cũng được bật theo mặc định).

% sau đó thực hiện một số công cụ đặc biệt với nó, cho rằng ký hiệu một số khác biệt, nếu một chút khó hiểu đối với người mới bắt đầu, terseness. Ví dụ: %w{hello world} trả về một mảng ['hello','world']. %s{hello} trả về một biểu tượng :hello.

5

Không có câu trả lời nào ở trên thực sự trả lời câu hỏi.

Đây là ký hiệu ký hiệu phần trăm. Dấu phần trăm chỉ ra rằng ký tự tiếp theo là dấu phân cách theo chữ và bạn có thể sử dụng bất kỳ ký tự nào (không phải chữ số) mà bạn muốn. Ví dụ:

%{stuff} 
%[stuff] 
%?stuff? 

vv Điều này cho phép bạn đặt dấu ngoặc kép, dấu nháy đơn vv vào chuỗi mà không thoát:

%{foo='bar with embedded "baz"'} 

trả về chuỗi chữ: thanh foo = 'với nhúng "baz "'

Dấu phần trăm có thể được theo sau bởi công cụ sửa đổi chữ cái để xác định cách chuỗi được nội suy.

chi tiết đang ở đây: Wikibooks