Това е от края на миналата година (без точки от проекти).
if
ruby име_на_файл
puts "Hello world"
puts "The answer of life is ", 6 * 7
Изпълнява се с ruby hello.rb
irb
– Interactive Ruby
irb
(трябва да ви е в "пътя")
irb
е конзола в конзолата
irb
с exit
или с Ctrl + D
(под Linux/macOS)$ irb >> 6 * 9 54 >> "Ruby! " * 4 "Ruby! Ruby! Ruby! Ruby!" >> -10.abs 10
Ctrl + C
и Ctrl + D
ri
е инструмент, с който може да разглеждате документацията на клас или методri String
показва документацията на класа String
ri Numeric#abs
показва документацията на метода abs
на класа на числата ri -i
пуска документацията в интерактивен режим. Пробвайте го. if
, def
, class
, defined?
и още дузина-две
require
puts
puts "Chunky bacon!"
puts
не е ключова дума, а "глобална" функцияputs("Chunky bacon!")
Нещата се наименуват с =
answer = 42
almost_pi = 3.14
food = 'Chunky bacon'
greeting = "What's up?"
=
не копира стойността, а насочва променливата към обекта отдясно
>> word = "oat" >> breakfast = word >> dinner = word >> word.insert(0, 'g') >> puts breakfast goat
>> "shut up".upcase() → "SHUT UP" >> "wonderful".sub("wonder", "color") → "colorful" >> 3.14.floor → 3 >> 24.gcd 56 → 8 >> 'wonderful'.sub 'wonde', 'colo' → "colorful"
favourite = 'Chunky bacon' # локална
Tax = '20%' # константа
$important = 'Money' # глобална
Има още: @name
и @@name
alias and BEGIN begin break case class def defined? do else elsif END end ensure false for if in module next nil not or redo rescue retry return self super then true undef unless until when while yield
42
, -271
, 1_024
"chunky"
, 'bacon'
3.1415
true
и false
nil
[2, 3, 5, 7, 11]
{'one' => 1, 'two' => 2}
/(bb)|([^b]{2})/
2..6
, 'a'...'z'
:name
, :send
lambda { |x| x ** 2 }
, -> x { x ** 2 }
Person.new
0
1729
-271
1_000_000
0377 # осмични
0b0100_0010 # двоични
0xDEADBEEF # шестнадесетични
0.0
3.14
-273.15
1.22e28
1_000.001
'Chunky bacon, I say!'
"Who is John Galt?"
"We're the knights who say \"Ni!\""
'\'0 freddled gruntbugly\' he begun'
'This text contains\nno newlines'
"This text contains\none newline"
>> "Hello, " + " " + "chunky!" → "Hello, chunky!" >> "Ha! " * 3 → "Ha! Ha! Ha! " >> "%s bacon" % 'Chunky' → "Chunky bacon" >> text = 'Chanky' >> text[2] = 'u' >> text << ' bacon' >> puts text Chunky bacon
"bacon\n".chop # => "bacon"
"bacon".chop # => "baco"
"bacon\n".chomp # => "bacon"
"bacon".chomp # => "bacon"
"Goodbye".include? 'oo' # => true
"Danube".length # => 6
"oat".insert 0, 'bl' # => "bloat"
"bloat".sub "bl", "m" # => "moat"
"bacon".upcase # => "BACON"
"BaCoN".downcase # => "bacon"
:something
, :other
и :larodi
Работи при двойни кавички, не работи при единични
character = 'Arthur'
answer = 42
puts "#{character} had it: #{answer}"
** ~ / % + - & << >> | ^ > < >= <= <=> && || ! and or not ||= &&= = += -= *= /= %= **= >>= <<= ^= &= |= .. ... defined?
nil
се оценява като "лъжа"false
се оценява като "лъжа" (очевидно)0
, ""
и []
са истинаand
, or
и not
правят това, което очаквате&&
, ||
и !
— също>> 20 > 20 → false >> "perl" < "ruby" → true >> 5 <= 5 → true >> "foo" <=> "bar" → 1
В Ruby има четири оператора за равенство
one == two
one === two
one.eql? two
one.equal? two
Това е стандартното поведение на Ruby. Има специални случаи.
one = 'chunky bacon'
two = 'chunky bacon'
one == two # => true
one.equal? two # => false
Можете ли да произнесете "интерниране"?
one, two = 42, 42
one == two # => true
one.equal? two # => true
Същото важи и за символи.
Ключовата дума е if
if hungry? && sad?
eat_chocolate
listen_to_music
go :outside
end
Разбира се, има и else
if hungry?
eat
else
drink
end
if hungry?
eat
elsif thirsty?
drink
else
philosophize
end
classification = if age < 13
'young person'
elsif age < 20
'teenager'
else
'old dude'
end
eat if hungry?
Яко, а? Може и:
order = if hungry? then 'food' else 'coffee' end
unless
е като if not
.
Всичко за if
е приложимо
Не ползвайте unless
с else
(style warning!)
unless tired?
go_out_and_run
end
Всъщност ние ще ги наричаме методи. Скоро ще разберете защо.
Дефинират се с def
.
def eat_chocolate
puts 'nom nom nom'
end
$ irb >> eat_chocolate → nil nom nom nom
Всеки метод връща резултат - последният израз в него.
def add(a, b)
a + b
end
add(5, 10) # => 15
Това важи и за по-сложни изрази.
def max(a, b)
if a > b
a
else
b
end
end
max(1, 5) # => 5
Има и ключова дума return
- използвайте я само в краен случай.