8. irb(main):001:0> bool
NameError: undefined local variable or method
`bool' for main:Object
from (irb):1
from /usr/bin/irb:12:in `<main>'
# Ок, это же язык с продвинутым ООП
34. irb(main):001:0> arr = ["1", "2", "3"]
=> ["1", "2", "3"]
irb(main):002:0> arr.map(&:String.new)
NoMethodError: undefined method `new' for
:String:Symbol
from (irb):26
from /usr/bin/irb:12:in `<main>'
# это было бы слишком элегантно
40. irb(main):001:0> load './chain.rb'
SyntaxError: /tmp/code.rb:4: syntax error,
unexpected '.', expecting end-of-input
.split(' ')
^
from (irb):15:in `load'
from (irb):15
from /usr/bin/irb:12:in `<main>'
# даже python так не делает
47. irb(main):001:0> String.new "x"
=> "x"
irb(main):002:0> String.new("x")
=> "x"
irb(main):003:0> String.new( "x" )
=> "x"
irb(main):004:0> String.new ("x")
48. irb(main):001:0> String.new "x"
=> "x"
irb(main):002:0> String.new("x")
=> "x"
irb(main):003:0> String.new( "x" )
=> "x"
irb(main):004:0> String.new ("x")
=> "x"
71. irb(main):001:0> h = {:foo => 1}
=> {:foo=>1}
irb(main):002:0> h = h.with_indifferent_access
=> {"foo"=>1}
irb(main):003:0> h["foo"]
=> 1
irb(main):004:0> h[:foo]
=> 1
# доступно только в rails
72. irb(main):001:0> h = {:foo => 1}
=> {:foo=>1}
irb(main):002:0> h = h.with_indifferent_access
=> {"foo"=>1}
irb(main):003:0> h["foo"]
=> 1
irb(main):004:0> h[:foo]
=> 1
# доступно только в rails
# ruby DSL для rails
73. def foo(&block)
puts 'open resource'
[*41..42].each &block.method(:call)
puts 'close resource'
end
foo do |value|
puts value
end
74. def foo(&block)
puts 'open resource'
[*41..42].each &block.method(:call)
puts 'close resource'
end
foo do |value|
puts value
end
> open resource
41
42
close resource
75. def foo(&block)
puts 'open resource'
[*41..42].each &block.method(:call)
puts 'close resource'
end
foo do |value|
puts value
break
end
76. def foo(&block)
puts 'open resource'
[*41..42].each &block.method(:call)
puts 'close resource'
end
foo do |value|
puts value
break
end
> open resource
41
77. def foo(&block)
puts 'open resource'
[*41..42].each &block.method(:call)
puts 'close resource'
end
def has_answer?
foo do |value|
return true if value == 42
end
end
puts has_answer?
78. def foo(&block)
puts 'open resource'
[*41..42].each &block.method(:call)
puts 'close resource'
end
def has_answer?
foo do |value|
return true if value == 42
end
end
puts has_answer?
> open resource
true
79. def foo(&block)
puts 'open resource'
[*41..42].each &block.method(:call)
puts 'close resource'
end
def has_answer?
rc = false
foo {|value| rc = true if value == 42}
rc
end
puts has_answer?
80. def foo(&block)
puts 'open resource'
[*41..42].each &block.method(:call)
puts 'close resource'
end
def has_answer?
rc = false
foo {|value| rc = true if value == 42}
rc
end
puts has_answer?
> open resource
close resource
true
82. module Foo
def bar
puts 'hi'
end
end
irb(main):009:0* Foo.bar
NoMethodError: undefined method `bar' for
Foo:Module
from (irb):9
from /usr/bin/irb:12:in `<main>'
84. module Foo
BAZ = 'hey'
module_function
def bar
puts 'hi'
end
end
85. module Foo
BAZ = 'hey'
module_function
def bar
puts 'hi'
end
end
irb(main):096:0> Foo::bar
86. module Foo
BAZ = 'hey'
module_function
def bar
puts 'hi'
end
end
irb(main):096:0> Foo::bar
hi
=> nil
87. module Foo
BAZ = 'hey'
module_function
def bar
puts 'hi'
end
end
irb(main):096:0> Foo::bar
hi
=> nil
irb(main):097:0> Foo::BAZ
88. module Foo
BAZ = 'hey'
module_function
def bar
puts 'hi'
end
end
irb(main):096:0> Foo::bar
hi
=> nil
irb(main):097:0> Foo::BAZ
=> "hey"
89. module Foo
BAZ = 'hey'
module_function
def bar
puts 'hi'
end
end
irb(main):096:0> Foo::bar
hi
=> nil
irb(main):097:0> Foo::BAZ
=> "hey"
irb(main):098:0> Foo.baz
90. module Foo
BAZ = 'hey'
module_function
def bar
puts 'hi'
end
end
irb(main):096:0> Foo::bar
hi
=> nil
irb(main):097:0> Foo::BAZ
=> "hey"
irb(main):098:0> Foo.baz
NoMethodError: undefined
method `baz' for Foo:Module
from (irb):98
from /usr/bin/irb:12:in
`<main>'
# почему нет?