def g() -2 endとギャップをゼロ変数関数として定義していますが、
g=-2のように普通の変数として定義しては駄目ですか?
g=-2と書くと,irbでloadした時に
irb(main):005:0> g
g
NameError: undefined local variable or method `g' for main:Object
from (irb):5
from /usr/bin/irb:12:in `'
のように参照されないという問題があるので,教科書では定数関数として定義してます.
ギャップの値を使うそれぞれの関数の最初に
g=-2と書けば良いというのは確かですが,「-2」という値を書き換える必要が生じた時に,書き換える場所が分散しているのは避けた方が良いので,おすすめしません.
irb(main):1020:0> load("./align_rec.rb")
./max.rb:1: warning: else without rescue is useless
SyntaxError: ./max.rb:1: syntax error, unexpected tIDENTIFIER, expecting kDO or '{' or '('
endnd yxx,y)
^
./max.rb:1: syntax error, unexpected kEND, expecting $end
endnd yxx,y)
^
irb(main):028:0> 010 => 8
irb(main):014:0> 0b1100 # 2進数 0b1100 => 12 irb(main):015:0> 0x8a # 16進数 0x8a => 138 irb(main):016:0> 0o70 # 8進数の別の表記 0o70 => 56
ruby vote.rb 選択肢番号のように使います.
def k_height() 188.0 end def k_weight() 104.0 endが定義されているbmi.rbをloadすると,
bash-3.2$ irb
irb
irb(main):001:0> load("./bmi.rb")
load("./bmi.rb")
=> true
irb(main):002:0> bmi(k_height, k_weight)
bmi(k_height, k_weight)
=> 29.425079221367138
のように呼び出すことができる.
irb(main):003:0> a=[1, 3, 2, 4] a=[1, 3, 2, 4] => [1, 3, 2, 4] irb(main):004:0> a.length a.length => 4
def transpose(a)
m = a.size()
n = a[0].size()
c = make2d(n, m)
for i in 0..(m-1)
for j in 0..(n-1)
c[j][i] = a[i][j]
end
end
c
end
実行例
irb(main):003:0> a=[[1,2,3],[4,5,6]] a=[[1,2,3],[4,5,6]] => [[1, 2, 3], [4, 5, 6]] irb(main):004:0> transpose(a) transpose(a) => [[1, 4], [2, 5], [3, 6]]