[ruby-list:50801] [質問] メソッド内で、クラス new するのは良くない?
From:
yamataka@...08.itscom.net
Date:
2019-06-29 14:11:39 UTC
List:
ruby-list #50801
山口と申します。
自作の下記コード(抜粋)中のメソッド
get_text_from_page_source_xml
が呼びだされる度に、
REXML::Document.new(xml)
.new してしまうので、
その都度、インスタンスが作成されるのは、良くないのでは?
と思いつつも...
メッソド get_text_from_page_source_xml 内なので、
ローカル変数同様、.new された変数もローカル変数と同様に
メッソドの実行が終われば、その領域も破棄される
ので、問題ない?
という風に理解していますが、正しいでしょうか?
xml の element を抽出するには、
REXML::Document.new(xml)
xml ソースを引数にして .new しないとできないし...
のように、
自分の理解の整理がいまひとつできないので、ご教示いただけますでしょうか?
■ 自作コード(抜粋)
require 'rexml/document'
def get_text_from_page_source_xml(**resource_ids)
xml = @cbelement.page_source
doc = REXML::Document.new(xml)
resource_ids.each do |rid,v|
arid = "com.aspiro.tidal:id/" + rid.to_s # arid: actual resource id
xpath = "//*[@resource-id='#{arid}']" # need ' at before and end #{id}
begin
text = doc.elements[xpath].attributes["text"]
resource_ids[rid] = text
rescue => e
resource_ids[rid] = nil
end
end
return resource_ids
end
id0 = :artistName
id1 = :mediaItemTitle
texts = get_text_from_page_source_xml(id0 => :nil, id1 => :nil)