Posts Tagged ‘irb’

commas in ruby hash literals

# I didn't realize this was possible
# and I still don't know if I like it.
# However, there are reasons for this,
# like easy addition or moving of literal
# entries without thinking about commas

irb(main):001:0> {
irb(main):002:1*   :foo => :bar,
irb(main):003:1*   :baz => :bam,
irb(main):004:1* }
=> {:foo=>:bar, :baz=>:bam}

ruby’s last character in a String

# returns the character code
# I don't know how to translate this back to a String
irb(main):002:0> "bar"[-1]
=> 114

# This works but reads a little awkward
irb(main):001:0> "bar"[-1..-1]
=> "r"

ruby conditional syntax

irb(main):001:0> if 1 == 1
irb(main):002:1>   :foo
irb(main):003:1> elsif 2 == 2
irb(main):004:1>   :bar
irb(main):005:1> elsif 3 == 3
irb(main):006:1>   :baz
irb(main):007:1> else
irb(main):008:1*   :bam
irb(main):009:1> end
=> :foo

irb(main):010:0> if    1 == 1 : :foo
irb(main):011:1> elsif 2 == 2 : :bar
irb(main):012:1> elsif 3 == 3 : :baz
irb(main):013:1> else
irb(main):014:1*   :bam
irb(main):015:1> end
=> :foo

irb(main):028:0> if    1 == 1; :foo
irb(main):029:1> elsif 2 == 2; :bar
irb(main):030:1> elsif 3 == 3; :baz
irb(main):031:1> else
irb(main):032:1*   :bam
irb(main):033:1> end
=> :foo

irb(main):022:0> if    1 == 1 then :foo
irb(main):023:1> elsif 2 == 2 then :bar
irb(main):024:1> elsif 3 == 3 then :baz
irb(main):025:1> else
irb(main):026:1*   :bam
irb(main):027:1> end
=> :foo

irb(main):016:0> if    1 == 1 :foo
irb(main):017:1> elsif 2 == 2 :bar
irb(main):018:1> elsif 3 == 3 :baz
irb(main):019:1> else
irb(main):020:1*   :bam
irb(main):021:1> end
NameError: undefined local variable or method `foo' for main:Object
from (irb):16
from :0

“locals” inside if branches

irb(main):008:0> def foo
irb(main):009:1>   if(bar = true)
irb(main):010:2>     puts "assigned bar"
irb(main):011:2>   end
irb(main):012:1>   puts "after conditional: bar = #{bar}"
irb(main):013:1> end
(irb):9: warning: found = in conditional, should be ==
=> nil
irb(main):014:0> foo
assigned bar
after conditional: bar = true

string interpolation

>> "%s %s" % ['Hello', 'World']
=> "Hello World"

just pointers …

>> class Foo
>>   def initialize
>>     @h = {}
>>   end
>>   def foo
>>     @h
>>   end
>>   def bar
>>     @h.dup
>>   end
>> end
=> nil
>> f = Foo.new
=> #
>> h = f.foo
=> {}
>> h[:foo] = :foo
=> :foo
>> h
=> {:foo=>:foo}
>> f.foo
=> {:foo=>:foo}
>> f = Foo.new
=> #
>> h = f.bar
=> {}
>> h[:foo] = :foo
=> :foo
>> h
=> {:foo=>:foo}
>> f.bar
=> {}

the end (or beginning?) of everything ruby

irb(main):001:0> Class.class
=> Class

irb toplevel methods are added to Object

irb(main):001:0> def foo
irb(main):002:1>   puts "foo"
irb(main):003:1> end
=> nil
irb(main):004:0> foo
foo
=> nil
irb(main):005:0> o = Object.new
=> #
irb(main):006:0> o.foo
foo
=> nil

Hash#inject

# hash element 'a' => 1 becomes ['a',1]
{ 'a' => 1, 'b' => 2 }.inject(0) {|m,v| m + v[1] }
=> 3

concise ASCII code access

>> ?a # ASCII code of 'a'
=> 97
>> ?A # ASCII code of 'A'
=> 65

« Older Entries

Newer Entries »