Да научим Ruby за 15 минути.
11-12-2011
Все повече и повече започва да се говори за Ruby on Rails което е Framework за изграждане на web сайтове за езика : Ruby{wikipedia}{сайт на създателя}
Няма да навлизам в информация какъв е , що е , кога и от кой е създаден. Смятам ,че ако прегледате wiki-то , ще намерите достатъчно любопитна информация. Идеята на този "урок" е да се запознаем със Ruby или поне в основите на програмирането в него.Това е превод на този урок.
Реших да го преведа, защото има предостачно информация тук за ООП и програмиране.
Да да започваме.
Също така искам да спомена, че в повечето езици всеки ред на декларация или извеждане на резултат завършва с точка и запетая " ; ", тук нещата завършват просто с ентър.

Деклариране на "разни неща"
При декларирането на разни неща в PHP , примерно, сме свикнали да имаме къдрави скоби, докато тук просто казваме,че имаме да декларираме нещо, и след това го "затваряме" с вълшебната дума "end"
Също така , няма преведа цялата статия НАРОЧНО.Смятам, че по-малко неща, по-начесто ще са по-добре.


Променливи

# Създаване на променливи
num = 1 # задаване на стойност 1 на променлива "num"
str = "Hello" # задаване на стринг на променливата "str" със съдържание "Hello"
arr = [1, 2, 3] #създаване на масив с име на променливата "arr" и 3 стойности- 1, 2 и 3
hash = { "key1" => "Стойност", "key2" => "Друга стойност" }
# Създаване на масив със ключове ( key1 , key2 ) и стойности ( "Стойност" , "Друга стойност")

# Четене на променливи
num + 1 #Добавяне на "1" към num. референция към PHP ( $i ++ ; ) или ($i = $i +1 ; ) или ($i =+1;)
puts str #Изкарване на стринга в конзолата
arr[0] # Получаване на стойност от масива, който по-горе декларирахме.
# arr[0] ще върне 1
# arr[1] ще върне 2
# arr[2] ще върне 3
hash["key1"] # Вземане на стойност от масива с ключ "key1" = "Стойност"
#hash["key2"] ще върне " Друга стойност"



Условия
Условията тук ми напомнят доста за Pascal и C#

if условие then
# нещо се случва
elsif друго_условие then
# нещо друго се случва
else
# още по-друго нещо
end

За сравняване на стойности се използват добре познатите неща :
по-голямо, по-малко , равно
Пример за променливата "a" = 2 дали е равна на 1



a = 2
if a < 1 then
puts " a is less from 1 "
else
puts " a is bigger from 1 "
end


Доста особено тук , е че нямаме условен оператор "не е равно " ( != )
Затова пък си има друго условие за него.
Нека да разгледаме следният код:

а =2
unless a == 1 then
puts "a is not == at 1 "
end



Цикъли
While

while Условие do
#направа на нещо
end


Until
неговата концепция е същата като unless, само че за цикъл

a = 0
until a == 5 do
puts a
a = a + 1
end

Тук ще имаме изход в конзолата

# 0
# 1
# 2
# 3
# 4
# 5


FOR повече прилича на FOREACH
a = [1,2,3]
for item in a do
puts item
end
# изкарване
# 1
# 2
# 3

For се използва за обхождане на някакъв тип масив.Примера е даден с извеждане на числата.

И СЕГА ДАМИ И ГОСПОДА , същинският цикъл ! (ест , не женски :D :D )
10.times do |i|
print i
end
# prints: "0123456789"

Какво имаме тук ? Имаме един цикъл , който се върти 10 пъти , и променливата I получава тази стойност.

Възходящ и Низходящ цикъл.
За момента , не мога да се сетя да дам примери в другите езици , освен Pascal.
]5.upto(9) do |i|
print i
end
# изкарва : "56789"
# възходящ цикъл

9.downto(5) do |i|
print i
end
# изкарва : "98765"
# низходящ цикъл

Цикъл EACH , за обхождане на масиви. Той адски много си прилича с по-горният пример за FOR
a = [1,2,3]
a.each do |item|
puts item
end
# изкарва:
# 1
# 2
# 3

Имаме даден масив, който се завърта в цикъл 3 пъти, като изпринтира резултатите. Всеки нов резултат се презаписва на стойността item


Деклариране на клас и на метод. Тук ще се опитам да ги съчетая двете неща в един пример.След това ще дам пример за онаследявани, като ще смятам, че тази част от урока ще бъде завършена успешно.



class CLASSNAME

#създаване на конструктор за CLASSNAME
def initialize
puts "НОВА ИНСТАНЦИЯ ЗА CLASSNAME"
# изкарване на текста по-горе при създаване на нова инстанция

end
# затваряме създаването на конструктора

def my_function
#
# някакъв код
end
#този End затваря my_function.
#
# пример как става това в PHP
# function my_function() { # някакъв код }
#
# приликите са доста очебийни мисля.

end
# Този end затваря класа CLASSNAME
Пример за клас и изпълнение на метод от него, с изграждане на нова инстанция.// Звучи доста сложно , като замисли човек, но в крайна сметка, целият код е едва 5 реда :))))


class Hello
def say_hello
puts "Hello"
end
end

hello = Hello.new
hello.say_hello # извеждане в конзолата "Hello"

Изпълнение на метод без създаване на нова инстанция.
class Hello
def self.say_hello
puts "Hello"
end
end

Hello.say_hello



В крайна сметка , това урока, не е кой-знае какво, но е някакво начало за всички който искат да научат нещо ново и актуално.



/ Трябва да сте регистриран за да напишете коментар /
От: 0u7
19:50 12-12-2011
Доста интересно синтаксиса му е почти като на visual basic
От: reletobg
19:23 10-01-2012
http://railsforzombies.org/levels/1
Тук пак има забавно уроче.
1