-
Notifications
You must be signed in to change notification settings - Fork 189
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Tens D10などの詳細なダイスロール一覧 #134
Conversation
[IMO] 新設のプロパティになって互換性をある程度考えないとして 命名規則を |
N面ダイスを 第2引数を必ず文字列にする理由もないので、通常のダイスを振った場合には従来通り、文字列化していない数値を入れるのもありかもしれません |
対称性や、TypeScriptでの実装を容易にするための型の統一(必ず また、JSONで渡す場合は種類が文字列で問題ないと思いますが、Rubyで扱う内部データとしては、2つの情報が含まれた文字列を分けて管理できると扱いやすいと考えました。通常の出目の情報に項目が加わっていることを考慮すると、 # 出目を表す構造体
# @!attribute [rw] value
# @return [Integer] 値
# @!attribute [rw] sides
# @return [Integer] ダイスの面数
# @!attribute [rw] type
# @return [Symbol] ダイスの種類。:normal, :d9, :tens_d10など
RandResult = Struct.new(:value, :sides, :type) do
# 種類を表す文字列を返す
# @return [String]
def type_str
type == :normal ? "normal_d#{value}" : type.to_s
end
# JSON表現用の配列を返す
# @return [(Integer, String)] [値, 種類]
def to_array_for_json
[value, type_str]
end
end |
Codecov Report
@@ Coverage Diff @@
## master #134 +/- ##
==========================================
+ Coverage 86.30% 86.36% +0.05%
==========================================
Files 192 193 +1
Lines 22263 22347 +84
==========================================
+ Hits 19214 19299 +85
+ Misses 3049 3048 -1
Continue to review full report at Codecov.
|
下記の構造体で持つようにしてみました。
構造体で保持できるので、種類をパースすることで情報を分解できるような形式にする必要はないため、このようになっています。Struct.newは |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
機能面はこれで大丈夫だと思います。
インターフェースの面では、#91 (comment) の方針に従い、新しく追加するインスタンス変数を @detailed_rand_results
とsnake_caseにしておきたいと感じました(@randResults
とちぐはぐな状態となっていますが、統一するならば、今後の方向性を考えるとむしろ @randResults
を変える方が望ましいです)。また、getterを attr_reader
で作るとRubyらしくなると思いました。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
これで問題ないと思います!
新クトゥルフでTens D10を複数ダイスロールするようになった。現方式だとD10とTens D10の区別がつかないので、
@detailedRandResults
を新設する。Ref. #133
仕様
@detailedRandResults
には以下のような値が入るダイスのタイプは文字列であらわし、現状では以下の3種類である
"tens_d10"
"d9"
TODO