[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)

In This Thread

Prev Next