if
ruby име_на_файл
puts "Hello world"
puts "The answer of life is ", 6 * 7
Изпълнява се с ruby hello.rb
Може да стартиране интерактивната конзола с irb
$ irb >> 6 * 9 54 >> "Ruby! " * 4 "Ruby! Ruby! Ruby! Ruby!" >> -10.abs 10
ri
е инструмент, с който може да разглеждате документацията на клас или методri String
показва документацията на класа String
ri Numeric#abs
показва документацията на метода abs
на класа на числата ri -i
пуска документацията в интерактивен режим. Пробвайте го. 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 day \"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? and 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
Може да напишете това на един ред
eat if hungry?
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 tired?
go_out_and_run
end