puts "##########6 文字列=バイト列#########"
str = "あいう"
p str.length #=> 6
p str[0], str[1], str[2]
p $KCODE # = "SJIS" #グローバル変数に文字コード指定
regexp = /(.)/s #オプションでSJISの正規表現 カンマは1文字として認識
str = "\202\240"
regexp =~str
p $1
regexp = /(.)/n #オプションでNONEの正規表現 カンマは1バイトとして認識
regexp =~str
p $1
str = "あいうえお"
str.scan(/./s) do |c| #文字コードSJIS指定で任意の一文字ずつスキャンする
puts c #=>あ い う え お
end
puts "##########6 メッソド#########"
$ffff
def describe(name)
puts "This is a #{name}." #=>This is a Google.
name = name.dup #オブジェクトのコピーの参照値
name[3] = ?p
$ffff = name #オブジェクトの参照
puts "This is a #{name}." #=>This is a Goople.
end
CATTLE = "Google"
describe(CATTLE) #メソッドに引数渡し
p CATTLE #=>Google
p $ffff
puts "##########6 スコープ ローカル変数#########"
def next_of(origin) #メッソド定義
value = origin + 1
p value
end
def prev_of(origin) #メッソド定義
value = origin - 1
p value
end
next_of(2) #メソッドの呼び出し
next_of(2)
prev_of(2)
#p value #value変数は呼び出せない NameError
#p undefined_variable #value変数は呼び出せない NameError
puts "##########6 スコープ クラス#########"
class Duration
attribute_names = %w[ days hours minutes seconds]#文字列要素を配列
p attribute_names
attribute_names.each do |name|
attr_accessor name
end
end
#p attribute_names #=>NameError
puts "##########インクリメント演算子#########"
0.upto(9){|i| puts i}
p ""
$i = 1
str ="Glubbubdrib"
str.each_byte do |byte|
printf "%x\n" ,byte
p $i+=1
end
puts "##########多重代入 #########"
a,b = 1,2,3,4,5
p a
p b
p ""
a,b,c = 1,2
p a
p b
p c
puts "#########6 多重代入 配列展開 #########"
a, *b = 1,2,3,4,5
p a,b
p b.length
p ""
array = [1,2,3]
a,b,c = *array
p a,b,c
puts "#######6 論理演算し #####"
if a == 1 and b == 3
puts "ok"
else
puts "NG"
end
if a == 1 || b == 3
puts "ok"
else
puts "NG"
end
p ""
def method_with_side_effect
puts "副作用が発生しました"
return 1
end
#メッソドはよばれない
p true || method_with_side_effect
#メソッドがよばれる
p false || method_with_side_effect
#メッソドはよばれない
p true && method_with_side_effect
#メソッドがよばれる
p false && method_with_side_effect
puts "########初期化イディオム############"
def generate_default_value
p 'default value genarated'
return 'default value'
end
def som_method(param = nil) #paramの仮引数がnil・false・無なら
param ||= generate_default_value #param = param || generate_default_valueなら
#.....paramを使って何するか?
end
p "nil"
som_method(nil)
p "false"
som_method(false)
p "true"
som_method(true)
p "0"
som_method(0)
p ""
som_method()
puts "########範囲演算子############"
for i in 0...10
puts i
end
puts "########三項・条件演算子############"
a = nil
p a,b,c #=>nil,2,3
var = a ? b : c #aが真tureの時bに、偽falseならcになります
p var
var = if a then b else c end #aが真tureの時bに、偽falseならcになります
p var
puts "########制御式############"
color = "ff"
thouht = if color == "green" then
p "danger"
else
p "undefined"
end
p thouht
p ""
puts "########奇数偶数############"
0.upto(21){|i|
t = i % 2
if t == 0 then
puts "#{i} は奇数です。余りは #{t}"
else
puts "#{i} は偶数です。余りは #{t}"
end
}
puts "########6~12歳小学生############"
0.upto(133333333333399999){|i|
if i < 6 then
puts "#{i}才は幼児です"
elsif i < 13
puts "#{i}才は小学生です"
elsif i < 16
puts "#{i}才は中学生です"
elsif i < 19
puts "#{i}才は高校生です"
elsif i > 19
puts "#{i}才は大人です"
end
}
str = "あいう"
p str.length #=> 6
p str[0], str[1], str[2]
p $KCODE # = "SJIS" #グローバル変数に文字コード指定
regexp = /(.)/s #オプションでSJISの正規表現 カンマは1文字として認識
str = "\202\240"
regexp =~str
p $1
regexp = /(.)/n #オプションでNONEの正規表現 カンマは1バイトとして認識
regexp =~str
p $1
str = "あいうえお"
str.scan(/./s) do |c| #文字コードSJIS指定で任意の一文字ずつスキャンする
puts c #=>あ い う え お
end
puts "##########6 メッソド#########"
$ffff
def describe(name)
puts "This is a #{name}." #=>This is a Google.
name = name.dup #オブジェクトのコピーの参照値
name[3] = ?p
$ffff = name #オブジェクトの参照
puts "This is a #{name}." #=>This is a Goople.
end
CATTLE = "Google"
describe(CATTLE) #メソッドに引数渡し
p CATTLE #=>Google
p $ffff
puts "##########6 スコープ ローカル変数#########"
def next_of(origin) #メッソド定義
value = origin + 1
p value
end
def prev_of(origin) #メッソド定義
value = origin - 1
p value
end
next_of(2) #メソッドの呼び出し
next_of(2)
prev_of(2)
#p value #value変数は呼び出せない NameError
#p undefined_variable #value変数は呼び出せない NameError
puts "##########6 スコープ クラス#########"
class Duration
attribute_names = %w[ days hours minutes seconds]#文字列要素を配列
p attribute_names
attribute_names.each do |name|
attr_accessor name
end
end
#p attribute_names #=>NameError
puts "##########インクリメント演算子#########"
0.upto(9){|i| puts i}
p ""
$i = 1
str ="Glubbubdrib"
str.each_byte do |byte|
printf "%x\n" ,byte
p $i+=1
end
puts "##########多重代入 #########"
a,b = 1,2,3,4,5
p a
p b
p ""
a,b,c = 1,2
p a
p b
p c
puts "#########6 多重代入 配列展開 #########"
a, *b = 1,2,3,4,5
p a,b
p b.length
p ""
array = [1,2,3]
a,b,c = *array
p a,b,c
puts "#######6 論理演算し #####"
if a == 1 and b == 3
puts "ok"
else
puts "NG"
end
if a == 1 || b == 3
puts "ok"
else
puts "NG"
end
p ""
def method_with_side_effect
puts "副作用が発生しました"
return 1
end
#メッソドはよばれない
p true || method_with_side_effect
#メソッドがよばれる
p false || method_with_side_effect
#メッソドはよばれない
p true && method_with_side_effect
#メソッドがよばれる
p false && method_with_side_effect
puts "########初期化イディオム############"
def generate_default_value
p 'default value genarated'
return 'default value'
end
def som_method(param = nil) #paramの仮引数がnil・false・無なら
param ||= generate_default_value #param = param || generate_default_valueなら
#.....paramを使って何するか?
end
p "nil"
som_method(nil)
p "false"
som_method(false)
p "true"
som_method(true)
p "0"
som_method(0)
p ""
som_method()
puts "########範囲演算子############"
for i in 0...10
puts i
end
puts "########三項・条件演算子############"
a = nil
p a,b,c #=>nil,2,3
var = a ? b : c #aが真tureの時bに、偽falseならcになります
p var
var = if a then b else c end #aが真tureの時bに、偽falseならcになります
p var
puts "########制御式############"
color = "ff"
thouht = if color == "green" then
p "danger"
else
p "undefined"
end
p thouht
p ""
puts "########奇数偶数############"
0.upto(21){|i|
t = i % 2
if t == 0 then
puts "#{i} は奇数です。余りは #{t}"
else
puts "#{i} は偶数です。余りは #{t}"
end
}
puts "########6~12歳小学生############"
0.upto(133333333333399999){|i|
if i < 6 then
puts "#{i}才は幼児です"
elsif i < 13
puts "#{i}才は小学生です"
elsif i < 16
puts "#{i}才は中学生です"
elsif i < 19
puts "#{i}才は高校生です"
elsif i > 19
puts "#{i}才は大人です"
end
}