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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

1回答

2853閲覧

ToFormattedString メソッドとは?

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2015/11/18 16:03

編集2015/11/19 10:32

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( "/" )

以上です。

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gouf

2015/11/19 07:58

どの情報を参照されていますか? ToFormattedString の処理内容は公開可能ですか?
退会済みユーザー

退会済みユーザー

2015/11/19 08:53

コメントありがとうございます。 以下になります。 # -*- 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( "/" ) 以上です。何卒よろしくお願い致します。
退会済みユーザー

退会済みユーザー

2015/11/19 08: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 09:14

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

退会済みユーザー

2015/11/19 10:35

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

回答1

0

ベストアンサー

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

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

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

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

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


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

ruby

1class BookInfo 2 attr_accessor :title, :author, :page, :publish_date 3 4 def initialize(args = {}) 5 # set key/value pare as instance variable 6 expected_keys = %i(title author page publish_date) 7 args.keys.map do |key| 8 next unless expected_keys.include?(key) 9 instance_variable_set("@#{key}", args.fetch(key)) 10 end 11 end 12 13 def to_s 14 "#{@title}, #{@author}, #{@page}, #{@publish_date}" 15 end 16 17 def to_formatted_string(separator = "\n") 18 [ 19 "書籍名: #{@title}", 20 "著者名: #{@author}", 21 "ページ数: #{@page}ページ", 22 "発刊日: #{@publish_date}" 23 ].join(separator) 24 end 25end 26 27book = { 28 title: 'ドラゴンポール', 29 author: '鳥山 あきお', 30 page: 248, publish_date: Date.new(2010, 10, 25) 31} 32 33book_info = BookInfo.new(book)

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

Links

投稿2015/11/19 10:54

gouf

総合スコア2321

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/11/20 08:46

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問