L'unico motivo per cui vedrei qualcuno che desidera utilizzare *
per unirsi a un array di stringhe è se vogliono evitare la parola join
, che viene anche utilizzata sui thread.
Con la seguente:
strings = ["John", "Smith"]
threads = [Thread.new{puts "hai"}, Thread.new{ puts "world!"}]
strings.join(" ") # Legit
threads.each {|thread| thread.join} # Legit
Si potrebbe fare l'errore di fare
threads.join # Not legit, but won't raise an error
Se è stata sostituita con strings.join
strings.*
, allora si avrebbe un minor numero di join
s nel codice. Ora puoi fare un grep
per loro e controllare che ognuno venga fatto su un thread, non su un array. In effetti, è possibile scegliere di rendere Array#join
un'eccezione.
fonte
2011-06-06 00:49:06
Eh ?! Non c'è niente di "bizzarro" nella sintassi dell'operatore infisso (a meno che tu non sia un fanatico di Lisp o di Forth). Praticamente * ogni * linguaggio di programmazione sul pianeta ha un operatore '*' infisso. –
@ Jörg: Non è la parte dell'infix bizzarra, è il fatto che moltiplica un array per una stringa ...? –
Concordo sul fatto che la semantica sia confusa e in effetti bizzarra, ma quello di cui si lamentano sia Peter che Crudson non è la semantica, è la * sintassi *, e io sono poco convinto da ciò. –