Create  Edit  Diff  FrontPage  Index  Search  Changes  Login

RubySucks

じゆうのせかい

クラス定義途中で飽きた

for i in 0..10
  class C
    def f
      puts 'hello'
    end

    break

    def g
      puts 'world'
    end
  end
end

C.new.f
C.new.g

これは g で例外が飛ぶ。

やっぱやめた

class C
  # useful definitions...!
end if false
C.new  # uninitialized constant C (NameError)

おどろきさいしょうのほうそく

ぶろっく

def do_lambda
  lambda{
    return true
  }.call
  return false
end

def do_proc
  proc{
    return true
  }.call
  return false
end

def do_times
  3.times{
    return true
  }
  return false
end

p do_proc
p do_lambda
p do_times

map & inject

Ruby 1.9 にて

irb(main):007:0> [1,2].inject(&:+)
=> 3
irb(main):008:0> [1,2].inject(:+)
=> 3
irb(main):009:0> [1,2].map(&:to_s)
=> ["1", "2"]
irb(main):010:0> [1,2].map(:to_s)
ArgumentError: wrong number of arguments(1 for 0)
        from (irb):10:in `map'
        from (irb):10
        from /usr/local/lib/ruby/1.9.0/irb.rb:150:in `block (2 levels) in eval_input'
        from /usr/local/lib/ruby/1.9.0/irb.rb:259:in `signal_status'
        from /usr/local/lib/ruby/1.9.0/irb.rb:147:in `block in eval_input'
        from /usr/local/lib/ruby/1.9.0/irb.rb:146:in `eval_input'
        from /usr/local/lib/ruby/1.9.0/irb.rb:70:in `block in start'
        from /usr/local/lib/ruby/1.9.0/irb.rb:69:in `catch'
        from /usr/local/lib/ruby/1.9.0/irb.rb:69:in `start'
        from /usr/local/bin/irb-1.9.0-1-86:12:in `<main>'

リテラル

%q

puts %q
puts

を実行すると puts と出力されます。

ひあどくめんとなんです

def f(*a)'a'end
p(f<<'a')
p(f <<'a')
a

を実行すると

"aa"
"a"

が出力される。

すこーぷ

Python でも似た挙動をするものも多いか。

ブロック引数

irb(main):008:0> i = 0
=> 0
irb(main):009:0> 3.times{|i|p i}
0
1
2
=> 3
irb(main):010:0> i
=> 2

これは Ruby 1.9 で 0 に。

代入されつつある変数の値

irb(main):004:0> n = [n, 1]
=> [nil, 1]

スコープを作らない if

irb(main):001:0> if false then n = 1 end
=> nil
irb(main):002:0> n
=> nil

n は定義されてしまっている。

前置と後置で変わる

if n = 1 then p n end

は OK 。

p n if n = 1

はダメ。

文字化け

trailing :

if ?????:??:??end

1.8 feature が一箇所ありますどこでしょう。

Last modified:2009/01/25 09:36:28
Keyword(s):
References:[FrontPage]