Lý do duy nhất tôi muốn thấy ai đó muốn sử dụng *
để tham gia một chuỗi các chuỗi là nếu họ muốn tránh từ join
, cũng được sử dụng trên chuỗi.
Với những điều sau đây:
strings = ["John", "Smith"]
threads = [Thread.new{puts "hai"}, Thread.new{ puts "world!"}]
strings.join(" ") # Legit
threads.each {|thread| thread.join} # Legit
bạn có thể mắc sai lầm khi làm
threads.join # Not legit, but won't raise an error
Nếu bạn thay thế strings.join
với strings.*
, sau đó bạn sẽ có ít join
s trong mã của bạn. Bây giờ bạn có thể làm một grep
cho họ, và kiểm tra xem mỗi cái đang được thực hiện cho một chủ đề, không phải một mảng. Trong thực tế, bạn có thể chọn để làm cho Array#join
ném một ngoại lệ.
Nguồn
2011-06-06 00:49:06
Huh ?! Không có gì "kỳ dị" về cú pháp toán tử infix (trừ khi bạn là người cuồng nhiệt của Lisp hay Forth). Khá nhiều * mọi ngôn ngữ lập trình trên hành tinh này có một toán tử *. –
@ Jörg: Nó không phải là một phần infix đó là kỳ quái, đó là một thực tế là nó nhân một mảng bằng một chuỗi ...? –
Tôi đồng ý rằng ngữ nghĩa gây nhầm lẫn và thực sự kỳ lạ, nhưng những gì cả Peter và crudson đang phàn nàn không phải là ngữ nghĩa, đó là cú pháp *, và tôi hơi bối rối bởi điều đó. –