質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.99%

ToFormattedString メソッドとは?

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,255
退会済みユーザー

退会済みユーザー

ToFormattedString メソッドをどんな時に、何の為に使うのかが理解できません。
検索してみると下記のような説明文がヒットしましたが理解が出来ません・・。
もう少し簡単にわかりやすく教えていただけませんでしょうか?

----------------------------------------
目的

項目属性/変数の Picture を値に適用した結果の文字列を返します。

構文

att | &var.ToFormattedString()

戻される値のタイプ:
Character

説明

この関数は項目属性または変数をパラメーターとして受け取り、項目属性/変数の Picture を値に適用した結果の文字列を返します。

数値、Date、DateTime、Char、および VarChar タイプの項目属性/変数に適用できます。Date および DateTime タイプの項目属性/変数の場合、返される日付および時間のフォーマットは [ Date Format ] および [ Time Format ] プロパティ (ナレッジベースで設定された言語に基づく) に基づきます。



"Z,ZZZ,ZZ9.99" という画像の変数 &Total (10, 2) の値が 4395.35 だとすると、&Total.ToFormattedString()メソッドは、" 4,395.35" という文字列を返します。

-------------------------------------


11/19 追記

# -*- coding: utf-8 -*-
require 'date'


class BookInfo
  
  def initialize( title, author, page, publish_date )
    @title = title
    @author = author
    @page = page
    @publish_date = publish_date
  end

  attr_accessor :title, :author, :page, :publish_date


  def to_s
    "#{@title}, #{@author}, #{@page}, #{@publish_date}"
  end

 
  def toFormattedString( sep = "\n" )
    "書籍名: #{@title}#{sep}著者名: #{@author}#{sep}ページ数: #{@page}ページ#{sep}発刊日: #{@publish_date}#{sep}"
  end
end

book_info = BookInfo.new(
  "ドラゴンポール", 
  "鳥山 あきお",
  248,
  Date.new( 2010, 10, 25 ) )


puts book_info.to_s

puts book_info.toFormattedString
puts book_info.toFormattedString( "/" )


以上です。
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    退会済みユーザー

    2015/11/19 17:57

    コメントありがとうございます。
    以下になります。

    -*- coding: utf-8 -*-
    require 'date'
    class BookInfo
    def initialize( title, author, page, publish_date )
    @title = title
    @author = author
    @page = page
    @publish_date = publish_date end

    attr_accessor :title, :author, :page, :publish_date

    def to_s
    "#{@title}, #{@author}, #{@page}, #{@publish_date}"
    end

    def toFormattedString( sep = "\n" ) "書籍名: #{@title}#{sep}著者名: #{@author}#{sep}ページ数: #{@page}ページ#{sep}発刊日: #{@publish_date}#{sep}"
    end
    end

    book_info = BookInfo.new( "ドラゴンポール", "鳥山 あきお", 248, Date.new( 2010, 10, 25 ) )

    puts book_info.to_s

    puts book_info.toFormattedString
    puts book_info.toFormattedString( "/" )



    以上です。
    何卒よろしくお願い致します。

    キャンセル

  • gouf

    2015/11/19 18:14

    (一行になって非常に見づらいので、質問内容欄に記述してください)

    キャンセル

  • 退会済みユーザー

    退会済みユーザー

    2015/11/19 19:35

    大変失礼致しました。記述いたしました。よろしくお願い致します。

    キャンセル

回答 1

checkベストアンサー

0

標準メソッドとして定義されているわけではなさそうなので、検索しても有用な情報は得られないと思います

「セパレータを自由に指定できるので、様々な形式の出力をかんたんに指定することができる」というのが使いどころではないでしょうか

引数を指定しなければsep には改行が代入され整形・出力されますし、 - を指定すればそれで区切られた文字列が出力されるはずです

puts に引数を渡すと、自動的にto_s が呼び出されるので、メソッド名toFormattedString をto_s に換えてみても おもしろいかもしれません

それとtoFormattedString という名前は、to_formatted_stringと、スネークケースに換えたほうがよいかもしれません


「私だったらこう書く」程度のものですが、書き換えてみました:

class BookInfo
  attr_accessor :title, :author, :page, :publish_date

  def initialize(args = {})
    # set key/value pare as instance variable
    expected_keys = %i(title author page publish_date)
    args.keys.map do |key|
      next unless expected_keys.include?(key)
      instance_variable_set("@#{key}", args.fetch(key))
    end
  end

  def to_s
    "#{@title}, #{@author}, #{@page}, #{@publish_date}"
  end

  def to_formatted_string(separator = "\n")
    [
      "書籍名: #{@title}",
      "著者名: #{@author}",
      "ページ数: #{@page}ページ",
      "発刊日: #{@publish_date}"
    ].join(separator)
  end
end

book = {
  title: 'ドラゴンポール',
  author: '鳥山 あきお',
  page: 248, publish_date: Date.new(2010, 10, 25)
}

book_info = BookInfo.new(book)

以上、何か参考になれば幸いです

# Links
bbatsov/ruby-style-guide - GitHub
bbatsov/ruby-style-guide #Naming - GitHub

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/11/20 17:46

    ご親切に書き換えまでして教えてくださり、ありがとうございます。より知識が増えました!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.99%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる