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('g', 0) >> 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