joinメソッドが使えない実装があったため
開発中にjoinメソッドが利用できない要件があったため、joinと同じ動きをさせ、かつちょい改良したものを作りました。
いろいろ勉強になったので、メモります。というかメソッドに頼りすぎるのもよくないと痛感。
配列内にある名前を羅列し、かつ間に入れる文字を交互にする
題名だとわかりづらいですが、要は
"鈴木","田中";"山本","神崎";"中村"
という形で、文字列をだすという要件でした。
初期は、
ruby.rb
class Connector
attr_accessor :delim
def initialize
@connector = []
end
def push(str)
@connector.push(str)
end
def connect
@connector.join(@delim)
end
end
connector = Connector.new
connector.push("鈴木")
connector.push("田中")
connector.push("山本")
connector.delim = ","
puts connector.connect
#=> 鈴木,田中,山本
だったのですが、,と;を交互に出すとなるとjoinが利用できません。
ruby.rb
class Connector
attr_accessor :delim
def initialize
@connector = []
@delim = []
end
def push(str)
@connector.push(str)
end
def connect
connected = ""
@connector.each_with_index do |connector, index|
index += 1
connected += index.to_s
connected += "."
if index == @connector.size
connected += connector
else
if index % 2 != 0
connected += connector
connected += @delim[0]
elsif index % 2 == 0
connected += connector
connected += @delim[1]
end
end
end
connected
end
end
connector = Connector.new
connector.push("鈴木")
connector.push("田中")
connector.push("山本")
connector.push("神崎")
connector.push("中村")
connector.delim.push(",")
connector.delim.push(";")
puts connector.connect
#=> 鈴木,田中;山本,神崎;中村
each_with_indexを利用して、配列の中に順番に入れていきました。