特訓内容

今日も特訓、というか練習しました。
参考にさせていただいたのは
http://www.lab.ime.cmc.osaka-u.ac.jp/~kiyo/pub/lecture/unixpro/ruby/#basic
ですが、さすがに2005年のサイトだと、情報が結構古いみたいで、コンパイルエラーが結構出ました。
それはそれで勉強になりました。
以下は今日1時間くらいでやった内容です。調べたりしながらやってるのであんまり行数はありません。

あと今日知ったのが、Rubyにはインクリメント演算子が無い、ということ。有名な事なんでしょうけど、今日知った。。。

あとirbが固まる?みたいな現象が。昨日も出てましたが。最後が"になっちゃって、何も効かなくなってしまいます。。。
何でしょう?いわゆる固まった状態?


C:\Users\hangai_m>
C:\Users\hangai_m>edlin grep.rb
New file
*
*
*exit

C:\Users\hangai_m>
C:\Users\hangai_m>
C:\Users\hangai_m>
C:\Users\hangai_m>irb a = [123,"abc",[4,5,6]]
C:/Ruby19/lib/ruby/1.9.1/irb/magic-file.rb:7:in `initialize': No such file or directory - a (Errno::ENOENT)
from C:/Ruby19/lib/ruby/1.9.1/irb/magic-file.rb:7:in `open'
from C:/Ruby19/lib/ruby/1.9.1/irb/magic-file.rb:7:in `open'
from C:/Ruby19/lib/ruby/1.9.1/irb/input-method.rb:77:in `initialize'
from C:/Ruby19/lib/ruby/1.9.1/irb/context.rb:79:in `new'
from C:/Ruby19/lib/ruby/1.9.1/irb/context.rb:79:in `initialize'
from C:/Ruby19/lib/ruby/1.9.1/irb.rb:99:in `new'
from C:/Ruby19/lib/ruby/1.9.1/irb.rb:99:in `initialize'
from C:/Ruby19/lib/ruby/1.9.1/irb.rb:56:in `new'
from C:/Ruby19/lib/ruby/1.9.1/irb.rb:56:in `start'
from C:/Ruby19/bin/irb:12:in `<main>'

C:\Users\hangai_m>
C:\Users\hangai_m>
C:\Users\hangai_m>irb
irb(main):001:0> a = [123,"abc",[4,5,6]]
=> [123, "abc", [4, 5, 6]]
irb(main):002:0>
irb(main):003:0* p a
[123, "abc", [4, 5, 6]]
=> [123, "abc", [4, 5, 6]]
irb(main):004:0>
irb(main):005:0* a.each do |i|
irb(main):006:1* p i
irb(main):007:1> end
123
"abc"
[4, 5, 6]
=> [123, "abc", [4, 5, 6]]
irb(main):008:0>
irb(main):009:0* a.each do |i|
irb(main):010:1* puts i
irb(main):011:1> end
123
abc
4
5
6
=> [123, "abc", [4, 5, 6]]
irb(main):012:0>
irb(main):013:0*
irb(main):014:0* p "pとputsは違うのね"
"pとputsは違うのね"
=> "pとputsは違うのね"
irb(main):015:0>
irb(main):016:0* 1+2+3+4+5
=> 15
irb(main):017:0>
irb(main):018:0* class Fixnum
irb(main):019:1> def + (a)
irb(main):020:2> self * a
irb(main):021:2> end
irb(main):022:1> end
=> nil
C:/Ruby19/lib/ruby/site_ruby/1.9.1/rbreadline.rb:8446:in `_rl_find_next_mbchar': undefined method `force_encoding' for nil:NilClass (NoMethodError)
from C:/Ruby19/lib/ruby/site_ruby/1.9.1/rbreadline.rb:1692:in `block in expand_prompt'
from C:/Ruby19/lib/ruby/site_ruby/1.9.1/rbreadline.rb:1676:in `each'
from C:/Ruby19/lib/ruby/site_ruby/1.9.1/rbreadline.rb:1676:in `expand_prompt'
from C:/Ruby19/lib/ruby/site_ruby/1.9.1/rbreadline.rb:1765:in `rl_expand_prompt'
from C:/Ruby19/lib/ruby/site_ruby/1.9.1/rbreadline.rb:1790:in `rl_set_prompt'
from C:/Ruby19/lib/ruby/site_ruby/1.9.1/rbreadline.rb:4718:in `readline'
from C:/Ruby19/lib/ruby/site_ruby/1.9.1/readline.rb:40:in `readline'
from C:/Ruby19/lib/ruby/1.9.1/irb/input-method.rb:115:in `gets'
from C:/Ruby19/lib/ruby/1.9.1/irb.rb:139:in `block (2 levels) in eval_input'
from C:/Ruby19/lib/ruby/1.9.1/irb.rb:271:in `signal_status'
from C:/Ruby19/lib/ruby/1.9.1/irb.rb:138:in `block in eval_input'
from C:/Ruby19/lib/ruby/1.9.1/irb/ruby-lex.rb:189:in `call'
from C:/Ruby19/lib/ruby/1.9.1/irb/ruby-lex.rb:189:in `buf_input'
from C:/Ruby19/lib/ruby/1.9.1/irb/ruby-lex.rb:103:in `getc'
from C:/Ruby19/lib/ruby/1.9.1/irb/slex.rb:205:in `match_io'
from C:/Ruby19/lib/ruby/1.9.1/irb/slex.rb:75:in `match'
from C:/Ruby19/lib/ruby/1.9.1/irb/ruby-lex.rb:287:in `token'
from C:/Ruby19/lib/ruby/1.9.1/irb/ruby-lex.rb:263:in `lex'
from C:/Ruby19/lib/ruby/1.9.1/irb/ruby-lex.rb:234:in `block (2 levels) in each_top_level_statement'
from C:/Ruby19/lib/ruby/1.9.1/irb/ruby-lex.rb:230:in `loop'
from C:/Ruby19/lib/ruby/1.9.1/irb/ruby-lex.rb:230:in `block in each_top_level_statement'
from C:/Ruby19/lib/ruby/1.9.1/irb/ruby-lex.rb:229:in `catch'
from C:/Ruby19/lib/ruby/1.9.1/irb/ruby-lex.rb:229:in `each_top_level_statement'
from C:/Ruby19/lib/ruby/1.9.1/irb.rb:153:in `eval_input'
from C:/Ruby19/lib/ruby/1.9.1/irb.rb:70:in `block in start'
from C:/Ruby19/lib/ruby/1.9.1/irb.rb:69:in `catch'
from C:/Ruby19/lib/ruby/1.9.1/irb.rb:69:in `start'
from C:/Ruby19/bin/irb:12:in `<main>'

C:\Users\hangai_m>
C:\Users\hangai_m>irb
irb(main):001:0>
irb(main):002:0*
irb(main):003:0*
irb(main):004:0* class Fixnum
irb(main):005:1> def + (a)
irb(main):006:2> self * a
irb(main):007:2> end
irb(main):008:1> end
=> nil
C:/Ruby19/lib/ruby/site_ruby/1.9.1/rbreadline.rb:8446:in `_rl_find_next_mbchar': undefined method `force_encoding' for nil:NilClass (NoMethodError)
from C:/Ruby19/lib/ruby/site_ruby/1.9.1/rbreadline.rb:1692:in `block in expand_prompt'
from C:/Ruby19/lib/ruby/site_ruby/1.9.1/rbreadline.rb:1676:in `each'
from C:/Ruby19/lib/ruby/site_ruby/1.9.1/rbreadline.rb:1676:in `expand_prompt'
from C:/Ruby19/lib/ruby/site_ruby/1.9.1/rbreadline.rb:1765:in `rl_expand_prompt'
from C:/Ruby19/lib/ruby/site_ruby/1.9.1/rbreadline.rb:1790:in `rl_set_prompt'
from C:/Ruby19/lib/ruby/site_ruby/1.9.1/rbreadline.rb:4718:in `readline'
from C:/Ruby19/lib/ruby/site_ruby/1.9.1/readline.rb:40:in `readline'
from C:/Ruby19/lib/ruby/1.9.1/irb/input-method.rb:115:in `gets'
from C:/Ruby19/lib/ruby/1.9.1/irb.rb:139:in `block (2 levels) in eval_input'
from C:/Ruby19/lib/ruby/1.9.1/irb.rb:271:in `signal_status'
from C:/Ruby19/lib/ruby/1.9.1/irb.rb:138:in `block in eval_input'
from C:/Ruby19/lib/ruby/1.9.1/irb/ruby-lex.rb:189:in `call'
from C:/Ruby19/lib/ruby/1.9.1/irb/ruby-lex.rb:189:in `buf_input'
from C:/Ruby19/lib/ruby/1.9.1/irb/ruby-lex.rb:103:in `getc'
from C:/Ruby19/lib/ruby/1.9.1/irb/slex.rb:205:in `match_io'
from C:/Ruby19/lib/ruby/1.9.1/irb/slex.rb:75:in `match'
from C:/Ruby19/lib/ruby/1.9.1/irb/ruby-lex.rb:287:in `token'
from C:/Ruby19/lib/ruby/1.9.1/irb/ruby-lex.rb:263:in `lex'
from C:/Ruby19/lib/ruby/1.9.1/irb/ruby-lex.rb:234:in `block (2 levels) in each_top_level_statement'
from C:/Ruby19/lib/ruby/1.9.1/irb/ruby-lex.rb:230:in `loop'
from C:/Ruby19/lib/ruby/1.9.1/irb/ruby-lex.rb:230:in `block in each_top_level_statement'
from C:/Ruby19/lib/ruby/1.9.1/irb/ruby-lex.rb:229:in `catch'
from C:/Ruby19/lib/ruby/1.9.1/irb/ruby-lex.rb:229:in `each_top_level_statement'
from C:/Ruby19/lib/ruby/1.9.1/irb.rb:153:in `eval_input'
from C:/Ruby19/lib/ruby/1.9.1/irb.rb:70:in `block in start'
from C:/Ruby19/lib/ruby/1.9.1/irb.rb:69:in `catch'
from C:/Ruby19/lib/ruby/1.9.1/irb.rb:69:in `start'
from C:/Ruby19/bin/irb:12:in `<main>'

C:\Users\hangai_m>
C:\Users\hangai_m>
C:\Users\hangai_m>
C:\Users\hangai_m>irb
irb(main):001:0>
irb(main):002:0*
irb(main):003:0* def three_times
irb(main):004:1> yield
irb(main):005:1> yield
irb(main):006:1> yield
irb(main):007:1> end
=> nil
irb(main):008:0>
irb(main):009:0* i = i; three_times { i *= 2 }
NoMethodError: undefined method `*' for nil:NilClass
from (irb):9:in `block in irb_binding'
from (irb):4:in `three_times'
from (irb):9
from C:/Ruby19/bin/irb:12:in `<main>'
irb(main):010:0>
irb(main):011:0* three_times { print "abc\n" }
abc
abc
abc
=> nil
irb(main):012:0>
irb(main):013:0*
irb(main):014:0* def foo
irb(main):015:1> yield(1,2)
irb(main):016:1> end
=> nil
irb(main):017:0>
irb(main):018:0* foo {|a,b|
irb(main):019:1* p[a,b]
irb(main):020:1> }
NoMethodError: undefined method `[]' for nil:NilClass
from (irb):19:in `block in irb_binding'
from (irb):15:in `foo'
from (irb):18
from C:/Ruby19/bin/irb:12:in `<main>'
irb(main):021:0>
irb(main):022:0* string = "ABCDE"
=> "ABCDE"
irb(main):023:0> len = string.length
=> 5
irb(main):024:0>
irb(main):025:0* "ABCDE".length
=> 5
irb(main):026:0>
irb(main):027:0*
irb(main):028:0* =begin
irb(main):029:0= これはコメント。あんまり見たこと無くね?
irb(main):030:0= =end
irb(main):031:0*
irb(main):032:0*
irb(main):033:0* print "abc"; print "def"
abcdef=> nil
irb(main):034:0>
irb(main):035:0* VAR = "定数"
=> "定数"
irb(main):036:0> $var = "global hensu"
=> "global hensu"
irb(main):037:0>
irb(main):038:0* def func
irb(main):039:1> var = "local hensu"
irb(main):040:1> end
=> nil
irb(main):041:0>
irb(main):042:0* class Class
irb(main):043:1> @@var = "class hensu"
irb(main):044:1> def initialize
irb(main):045:2> @var = "instance hensu"
irb(main):046:2> end
irb(main):047:1> end
=> nil
irb(main):048:0>
irb(main):049:0* Class.new.initialize
NoMethodError: private method `initialize' called for #<Class:0x1d5ade0>
from (irb):49
from C:/Ruby19/bin/irb:12:in `<main>'
irb(main):050:0>
irb(main):051:0*
irb(main):052:0* a = 100
=> 100
irb(main):053:0> a,b = 10,20
=> [10, 20]
irb(main):054:0>
irb(main):055:0* a = (1+2)/(3-4) * 5
=> -15
irb(main):056:0>
irb(main):057:0* a = (1 &&2) and (3 || 4 ) or !(5)
=> 3
irb(main):058:0>
irb(main):059:0* a = 7 %2
=> 1
irb(main):060:0>
irb(main):061:0* a = 3 ** 0.5
=> 1.73205080756888
irb(main):062:0>
irb(main):063:0* 2 ** 2
=> 4
irb(main):064:0> 8 ** 2
=> 64
irb(main):065:0> 3 ** 2
=> 9
irb(main):066:0> 3 ** 0.3
=> 1.39038917031591
irb(main):067:0> 4 ** 0.5
=> 2.0
irb(main):068:0>
irb(main):069:0* 8 ** 0.5
=> 2.82842712474619
irb(main):070:0>
irb(main):071:0* a = (1 == 2 ) or (3 != 4) or (5 <6) or (7<=8)
=> true
irb(main):072:0>
irb(main):073:0*
irb(main):074:0* a = [1,2,3,4,5]
=> [1, 2, 3, 4, 5]
irb(main):075:0>
irb(main):076:0* b = [6,7,8,9,10]
=> [6, 7, 8, 9, 10]
irb(main):077:0>
irb(main):078:0* a.size
=> 5
irb(main):079:0>
irb(main):080:0* a | b
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
irb(main):081:0>
irb(main):082:0* a & b
=> []
irb(main):083:0>
irb(main):084:0* a -b
=> [1, 2, 3, 4, 5]
irb(main):085:0>
irb(main):086:0* a.shift
=> 1
irb(main):087:0>
irb(main):088:0* a
=> [2, 3, 4, 5]
irb(main):089:0> a.join("/")
=> "2/3/4/5"
irb(main):090:0>
irb(main):091:0* a <<6
irb(main):092:0" a
irb(main):093:0" ;
irb(main):094:0"
irb(main):095:0" ;
irb(main):096:0" aaaa
irb(main):097:0" exit
irb(main):098:0"
irb(main):099:0" ^C
irb(main):100:0" ^C
irb(main):101:0" ^C
irb(main):102:0" ^C
irb(main):103:0"
irb(main):104:0"
irb(main):105:0" ^C
irb(main):106:0" exit
irb(main):107:0"
irb(main):108:0" >
irb(main):109:0" <
irb(main):110:0"