«Более чем один способ сделать что-то» означает иметь возможность делать что-то так, как вы этого хотите. Таким образом, вы можете использовать различные стили программирования, независимо от происхождения.
Итерация с использованием for
против блоков
Вы можете перебирать множество таких вещей. Это довольно просто, и если вы из Java, это кажется естественным.
for something in an_array
print something
end
Более Ruby-подобный способ будет следующим:
an_array.each do |something|
print something
end
Первый - довольно известный способ ведения дел. Второй использует blocks , очень мощную концепцию, которую вы найдете во многих идиомах Ruby. По сути, массив знает, как перебирать его содержимое, поэтому вы можете изменить это и добавить что-то вроде:
an_array.each_with_index do |something, index|
print "At #{index}, there is #{something}"
end
Вы могли бы сделать это и так, но теперь вы видите, что вышеприведенное выглядит проще:
index = 0
for something in an_array
print "At #{index}, there is #{something}"
index += 1
end
Передача аргументов как обычно или использование Hash
es
Обычно вы бы передавали аргументы так:
def foo(arg1, arg2, arg3)
print "I have three arguments, which are #{arg1}, #{arg2} and #{arg3}"
end
foo("very", "easy", "classic")
=> "I have three arguments, which are very easy and classic"
Тем не менее, вы также можете использовать Hash для этого:
def foo(args)
print "I have multiple arguments, they are #{args[:arg1]}, #{args[:arg2]} and #{args[:arg3]}"
end
foo :arg1 => "in a", :arg2 => "hash", :arg3 => "cool"
=> "I have three arguments, which are in a hash and cool"
Вторая форма часто используется Ruby on Rails. Приятно, что теперь у вас есть названные параметры. Когда вы передаете их, вам будет легче запомнить, для чего они используются.