В тази тема предлагам да разгледаме синтаксиса на езика. Нека започнем с най-простото. Как да си напишен функция, изчисляваща факториел. Математическата дефиниция на факториел е:
n! = 1 (когато n==0)
= n * (n-1)! (в друг случаи)
В Ruby това може да бъде написано така:
def fact(n)
if n == 0
1
else
n * fact(n-1)
end
end
Най-забележителното в случая е липсата на return. Това е така защото
Ruby функциите връщат последното нещо, което е изчислено в тях. Използването на return е позволено но излишно в случая. Може да изпробваме функцията fact.
# Програма за намиране на факториел на число
# Файла може да бъде записан като fact.rb
def fact(n)
if n == 0
1
else
n * fact(n-1)
end
end
print fact(ARGV[0].to_i), "\n"
Тук ARGV е масив, който съдържа аргументите подавани от
командния ред и to_i превръща низовия символ в integer.
Ако я извикаме от командния ред със
ruby fact.rb 1 Ще ни върне 1. Ако пък я извикаме със
5, тоест ruby fact.rb 5 ще ни върне 120.
От неизбежното се възмущава само този, който е неразумен.
Редактирано от Учeщ на 26.07.08 00:46.