- 1 名前:Win64をやりたい場合はMSVCwo [2013/01/21(月) 12:39:54.40 ]
- プログラミング言語 D (D Programming Language) について語るスレッドです。
■本家 dlang.org/ - 公式(英語) www.kmonos.net/alang/d/ - 公式の和訳 d.puremagic.com/issues/ - D言語バグ報告 https://github.com/D-Programming-Language - D言語開発リポジトリ ■Wiki dusers.dip.jp/ - D言語友の会(日本語フォーラムあり) prowiki.org/wiki4d/ - Wiki4D(公認Wiki) ■前スレ D言語 Part30 toro.2ch.net/test/read.cgi/tech/1343660743/ ■過去スレ、関連スレ makimo.to:8000/cgi-bin/search/search.cgi?q=D%8C%BE%8C%EA&sf=2&all=on&view=table&shw=5000
- 55 名前:デフォルトの名無しさん mailto:sage [2013/01/27(日) 09:24:01.61 ]
- どうせ引数の型あんまり省略できないし、delegateとはreturnの有無の差くらいしか無いと思うんだけどなあ・・
- 56 名前:デフォルトの名無しさん mailto:sage [2013/01/27(日) 09:31:30.61 ]
- 便利かどうかなんて主観でしかないんだから互いに「お前がそう思うんならそうなんだろうお前ん中ではな」で終わる話
- 57 名前:デフォルトの名無しさん mailto:sage [2013/01/27(日) 11:49:13.97 ]
- 平行線だったのは結果論だけどなー。
その主観が交わる可能性があった以上、コピペでまとめちゃうのはいくないっすよ
- 58 名前:デフォルトの名無しさん mailto:sage [2013/01/27(日) 12:00:05.55 ]
- ( {...} ) <- こういうのがイヤ
- 59 名前:デフォルトの名無しさん mailto:sage [2013/01/27(日) 12:01:17.46 ]
- 俺は好き
- 60 名前:デフォルトの名無しさん mailto:sage [2013/01/27(日) 12:48:16.97 ]
- >>58
ブレース消えるのいいよね
- 61 名前:デフォルトの名無しさん mailto:sage [2013/01/27(日) 13:17:04.96 ]
- 我・乱無駄の名において命ず・消え去れ無礼衆!
- 62 名前:デフォルトの名無しさん mailto:sage [2013/01/27(日) 13:26:12.22 ]
- // delegateが無い場合
hoge(new class Func : IFunc { void func(Parameter p1, Parameter p2) {return p1 == ps;} }); hoge(new class Func : IFunc { void func(Parameter p1, Parameter p2) {return p1 != ps;} }); hoge(new class Func : IFunc { void func(Parameter p1, Parameter p2) {return p1 < ps;} }); // delegateが使える場合 hoge((Parameter p1, Parameter p2) {return p1 == ps;}); hoge((Parameter p1, Parameter p2) {return p1 != ps;}); hoge((Parameter p1, Parameter p2) {return p1 < ps;}); // ラムダ式が使える場合 hoge((p1, p2) => p1 == ps); hoge((p1, p2) => p1 != ps); hoge((p1, p2) => p1 < ps); >>55 俺は大差があると思う
- 63 名前:デフォルトの名無しさん mailto:sage [2013/01/27(日) 13:57:07.48 ]
- ヒント:ラムダで引数の型が省略できる場合には関数リテラルでも同じ書き方ができる
- 64 名前:デフォルトの名無しさん mailto:sage [2013/01/27(日) 13:59:44.79 ]
- dlang.org/deprecate.html
今までdeprecated で生き延びていた機能の多くが 2.061で抹殺されていることに気づいた
- 65 名前:デフォルトの名無しさん mailto:sage [2013/01/27(日) 14:27:09.51 ]
- 結局のところdelegateあるならラムダいらないんじゃね?と言う話
別にあって都合が悪いこともないから消せ!とは言わんけどw
- 66 名前:デフォルトの名無しさん mailto:sage [2013/01/27(日) 14:50:42.78 ]
- ラムダは構文糖だからいらないと言われても困る
autoが消滅して型名を書けと言われたりscope(exit)が消滅してtry-finallyを書けと言われたりしたら俺はDを投げる
- 67 名前:デフォルトの名無しさん mailto:sage [2013/01/27(日) 14:53:25.86 ]
- ラムダ要らない派とか今まで一人も出てきてないと思うけど
- 68 名前:デフォルトの名無しさん mailto:sage [2013/01/27(日) 14:57:55.37 ]
- >>61
ダークフレイムマスター
- 69 名前:デフォルトの名無しさん mailto:sage [2013/01/27(日) 19:38:44.30 ]
- complex型がいつ消えるかどきどきだわ・・・
- 70 名前:デフォルトの名無しさん mailto:sage [2013/01/27(日) 19:59:21.59 ]
- 消えたらC99の複素数関数をABI互換性を保って呼ぶ方法が無くなるのか?
- 71 名前:デフォルトの名無しさん mailto:sage [2013/01/27(日) 20:00:11.78 ]
- std.complexじゃダメなの?
- 72 名前:デフォルトの名無しさん mailto:sage [2013/01/27(日) 20:06:07.70 ]
- C99のcomplexはFPUだかSSEだかのレジスタ渡しだろ?
ライブラリ定義はstructに詰めた状態だからスタック渡しになってしまわね?
- 73 名前:デフォルトの名無しさん mailto:sage [2013/01/27(日) 22:52:36.94 ]
- ライブラリ内でアセンブラで書いてあれば別にいいんじゃないの
あるいは何らかの最適化に通るのでもいいわけで ABI互換性は困りそうだが
- 74 名前:デフォルトの名無しさん mailto:sage [2013/01/28(月) 06:15:55.98 ]
- D言語って、
int[100] a, b; a[] += b[]; で勝手にSIMD演算とかいうのやってくれるんですか?
- 75 名前:デフォルトの名無しさん mailto:sage [2013/01/28(月) 07:13:31.71 ]
- >>74
www.kmonos.net/alang/d/simd.html 頑張ってくれる可能性はあるけどわりと限界もある、みたいな感じ
- 76 名前:デフォルトの名無しさん mailto:sage [2013/01/28(月) 11:06:58.13 ]
- ターゲット環境を明示してなければ勝手にそういうコードを吐くわけ無い
環境を特定するなら素直に core.simdで定義されている配列もどきを使うべし
- 77 名前:デフォルトの名無しさん mailto:sage [2013/01/28(月) 14:26:03.01 ]
- classのコンストラクタで定義した変数をメンバーにしちゃえる的な機能がほしいなぁ
多分害悪の元なんだろうけど class hoge { this() { int a = 0 as public; } } 見たいにしたらhoge.aが使えるみたいなね! thisが一個のとき限定でいいからさぁ・・・
- 78 名前:デフォルトの名無しさん mailto:sage [2013/01/28(月) 19:16:36.49 ]
- >>77
どんな意図の機能? 頑張れば既存の機能でやりたいことが解決できるかも
- 79 名前:デフォルトの名無しさん mailto:sage [2013/01/28(月) 19:44:42.31 ]
- 黒魔術ツールopDispatchがあるからなあ
ただコンストラクタで書くならメンバでいいだろという気がするが
- 80 名前:デフォルトの名無しさん mailto:sage [2013/01/28(月) 19:52:33.02 ]
- 現在のスコープから参照できるすべてのシンボルを列挙する__traitsが欲しい
あとそのシンボルが変数なのかモジュールなのかクラスなのか構造体なのか判別するのもついでに欲しい
- 81 名前:デフォルトの名無しさん mailto:sage [2013/01/28(月) 19:59:59.78 ]
- C++の特殊化でなら省力のために欲しいかな
mixin無ぇーし
- 82 名前:デフォルトの名無しさん mailto:sage [2013/01/28(月) 20:02:09.25 ]
- 顧客が本当に必要だったもの:賢いIDE
- 83 名前:デフォルトの名無しさん mailto:sage [2013/01/28(月) 20:17:53.73 ]
- IDEとか重いだけだよ!
- 84 名前:デフォルトの名無しさん mailto:sage [2013/01/28(月) 21:31:09.49 ]
- DDTがeclipse4.2に入らないのが痛い
- 85 名前:デフォルトの名無しさん mailto:sage [2013/01/28(月) 23:29:27.58 ]
- 軽いIDEには需要があるのか
- 86 名前:デフォルトの名無しさん mailto:sage [2013/01/28(月) 23:48:53.99 ]
- Sublime Textがそんな感じじゃない?
プロジェクト機能あるしD対応してるし
- 87 名前:デフォルトの名無しさん mailto:sage [2013/01/29(火) 04:08:55.24 ]
- 言語仕様の追加まで対応出来る賢いIDEをだな
- 88 名前:デフォルトの名無しさん mailto:sage [2013/01/29(火) 12:34:31.13 ]
- IDEの触手の一端がウォルたんの脳みそに取り付いているだと…!?
- 89 名前:デフォルトの名無しさん mailto:sage [2013/01/29(火) 19:19:11.01 ]
- IDE(CUI)
- 90 名前:デフォルトの名無しさん mailto:sage [2013/01/29(火) 19:25:51.70 ]
- Integrated Drive Electronics
Integrated Development Environment エンビロンメント?
- 91 名前:片山博文MZパンク ◆0lBZNi.Q7evd [2013/01/29(火) 23:58:06.70 ]
- >>90
エンヴァイロンメント。 電子辞書を買いましょうね。
- 92 名前:デフォルトの名無しさん mailto:sage [2013/01/30(水) 00:21:20.93 ]
- マクロまだー?
- 93 名前:デフォルトの名無しさん mailto:sage [2013/01/30(水) 00:21:34.89 ]
- カタカナ表記につっかかるのはナンセンスだと思うけど
- 94 名前:デフォルトの名無しさん mailto:sage [2013/01/30(水) 00:34:25.28 ]
- カタカナ表記としてもエンヴァイロンメント、エンバイロンメント以外に存在しない
- 95 名前:デフォルトの名無しさん mailto:sage [2013/01/30(水) 01:31:06.21 ]
- ディーゲンゴも大五郎も大して変わらんしな
- 96 名前:デフォルトの名無しさん mailto:sage [2013/01/30(水) 04:13:06.10 ]
- インバイロンメントさんが泣いてる
- 97 名前:デフォルトの名無しさん mailto:sage [2013/01/30(水) 04:32:45.97 ]
- わーにんぐ・わーにんぐ
- 98 名前:デフォルトの名無しさん mailto:sage [2013/01/30(水) 12:23:27.28 ]
- エンベロープメント
モーリメメント ヤックデカルチュアメント
- 99 名前:デフォルトの名無しさん mailto:sage [2013/01/30(水) 19:39:48.11 ]
- DPasteのコンパイラが止まってるじゃないかクソッタレー!
import std.stdio; void main() { // ポインタの配列 int i = 42; int*[1] src = [&i]; // スライスの代入 int*[1] dest = src[]; // srcとdestの内容が違う! (2.061以降) writeln(src, " == ", dest); } これが2.061の破壊的変更だったら欣喜雀躍するんだが…
- 100 名前:デフォルトの名無しさん mailto:sage [2013/01/30(水) 20:08:25.15 ]
- >>99
githubの最新では直っているっぽい
- 101 名前:デフォルトの名無しさん mailto:sage [2013/01/30(水) 20:17:56.79 ]
- >>100
おおっと、さすがにこういうのはすぐ発見されるんですね Thx
- 102 名前:デフォルトの名無しさん mailto:sage [2013/01/31(木) 01:43:11.46 ]
- override attribute is deprecated
ってどうすりゃいいの?
- 103 名前:デフォルトの名無しさん mailto:sage [2013/01/31(木) 01:46:40.11 ]
- ああ、withoutか
- 104 名前:デフォルトの名無しさん mailto:sage [2013/01/31(木) 14:35:15.40 ]
- void f(void delegate(int) dg) {}
f((i) { ... }); で推論できるなら class C { this(int i){} } C obj; obj = new(10); とかもできそうだよね
- 105 名前:デフォルトの名無しさん mailto:sage [2013/01/31(木) 18:53:52.42 ]
- 構造体ならそれでいいかも知れんけど
それでもやっぱりきもい
- 106 名前:デフォルトの名無しさん mailto:sage [2013/01/31(木) 21:20:11.34 ]
- >>Error 42: Symbol Undefined _D6object9Exception6__ctorMFNaNbNfAyaAyakC6object9ThrowableZC9Exception (pure nothrow @safe Exception object.Exception.__ctor(immutable(char)[], immutable(char)[], uint, object.Throwable))
⇒pure nothrow @safe Exception object.Exception.__ctor(immutable(char)[], immutable(char)[], uint, object.Throwable) なんですかこれ・・・ あるし class Exception : Throwable { @safe pure nothrow this(string msg, string file = __FILE__, size_t line = __LINE__, Throwable next = null) { super(msg, file, line, next); } @safe pure nothrow this(string msg, Throwable next, string file = __FILE__, size_t line = __LINE__) { super(msg, file, line, next); } }
- 107 名前:デフォルトの名無しさん mailto:sage [2013/01/31(木) 21:44:53.91 ]
- 2.061 に変えて自前のライブラリの再構築を忘れてたときに
そういうエラーを見た気がする
- 108 名前:デフォルトの名無しさん mailto:sage [2013/01/31(木) 22:01:57.58 ]
- >>107
VisualD使ってるんだけどそれ見てもしかしてと思ってエラーログ確認したら 使用するDMDが2.060のDMD環境指してた・・・ VisualStudioShell起動中に2.060と2.061をディレクトリリネームで切り替えた覚えがあるけど 勝手に設定まで追従しやがったのか・・・
- 109 名前:デフォルトの名無しさん mailto:sage [2013/02/01(金) 12:39:50.73 ]
- そういえば昔ErrorとExceptionがあったような気がしたんだけど、なんで片方なくなってるの?
- 110 名前:デフォルトの名無しさん mailto:sage [2013/02/01(金) 13:03:51.57 ]
- なくなってないよ
ぜんぜんちがうよ
- 111 名前:デフォルトの名無しさん mailto:sage [2013/02/01(金) 14:07:22.40 ]
- あれ?ほんとだ・・
公式のobjectのドキュメントに載ってなかったから無くなったのかと
- 112 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 09:11:57.85 ]
- タプルリテラルってないの?
- 113 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 09:27:53.05 ]
- ない
- 114 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 11:58:43.31 ]
- 入るとしたらどんな構文になるんだろうな
Pythonみたいにしたらえらいことになりそうだけど
- 115 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 19:04:01.41 ]
- DDTでライブラリパスの追加とかlibファイルの追加ってどこでやるん?
- 116 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 21:09:34.98 ]
- タプル構文か・・・fortranの配列を採用しようじゃないか (/ a, b /)
- 117 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 21:19:05.80 ]
- (|a, b|)
(>a, b<) (*a, b*) (a, b) (!a, b!) {|a, b|}
- 118 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 21:44:37.48 ]
- ここでついに<a, b>の出番が
- 119 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 21:46:42.75 ]
- そういえばしばらく前の話だけど、タプルリテラルを
(a, b)みたいに書きたいからコンマ演算子廃止しようぜ、 という話がMLに出てたな。
- 120 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 21:58:14.18 ]
- コンマ演算子って実際、使われてるの? Dに限らずCとかでも
- 121 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 21:59:28.92 ]
- ラムダ式と組み合わせて使います
- 122 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 22:01:33.27 ]
- マクロで時々見る。#define f(x) (sideeffect(x), x + 1) とか。書いたやつ死ねとしか思わんが
- 123 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 22:05:53.34 ]
- for文の括弧内の各部に文を複数突っ込むときに使う気がする
- 124 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 22:10:38.72 ]
- for (i = 0, j = 0; i < x && j < y; i++, j++)
みたいな
- 125 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 22:10:59.88 ]
- forで複数突っ込みたいのは最後のとこだけだろうから、
++i, ++jの値がjではなく(i, j)のタプルになっても影響ないな
- 126 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 22:23:24.90 ]
- forの最後でたまに使うから無くなると困る
他にも while ((x = foo()) == y) { } を while (x = foo(), x == y) { } と書く事もなくもない
- 127 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 22:26:35.51 ]
- (x = foo(), x == y)の値がx == yではなく、(x, x == y)のタプルになって空ではないってことで無限ループしても
まあ影響ないな
- 128 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 22:57:20.76 ]
- なんか人いるみたいだし、ちょっとスレに張り付いてみる。
いまのDでこれが気になる、とかある?
- 129 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 23:11:33.70 ]
- 構造体がテンプレートなら、内部の普通のメンバ関数も@safe pure nothrowを推論して欲しい。
void foo()(){...}ならできるけど
- 130 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 23:18:34.88 ]
- >>129
あー、Jonathanが欲しいといってたやつか。std.rangeとかでいろいろ苦労しているから 実験パッチは作って試してみる予定。ただ、Fwdref問題がいっぱい出てくるかもしれないから 対応するかは半々だなあ。
- 131 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 23:20:11.83 ]
- ちなみに、現状は「テンプレートの直下の関数」のみ推論が行われる。
void foo()() { ... } は template foo() { void foo() { ... } } の構文糖なので推論が効く、という仕組みになっている。
- 132 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 23:22:47.25 ]
- 個人的に連想配列の使い勝手が悪い
~で連結したいしmapとかで回したい
- 133 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 23:30:05.36 ]
- >>132
~での連結はコンパイラ対応の範疇だな。 2つの結合したい連想配列に重複するキーがあるときどういう動作をすべきか、 という所が決まらないと駄目だと思う。 mapでまわすのはPhobosの範疇。しばらく前にそれっぽい話題がMLで出てた気が するけど、特に話は進まずに終わったと思う… そういう挙動を実現すること自体に問題はなさそうなので、enhanceをbugzillaに 投稿したら興味ある人が対応してくれるんじゃないかな。
- 134 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 23:38:09.82 ]
- 自分は最近コンパイラにかかりっきりなので、正直Phobosまで手を入れる余裕が無い。
他の人のPullReqをレビューするぐらいが精一杯です。
- 135 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 00:07:51.37 ]
- rvalue refってどうなってるの?
- 136 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 00:23:47.64 ]
- >>135
まだセマンティクスがはっきりしていない。現在テンプレート関数で使える auto refは、厳密には右辺値参照とは違うものなので、これをそのまま 非テンプレート関数にもってくることは出来ない(構文的にも意味論的にも) Andreiが d.puremagic.com/issues/show_bug.cgi?id=9238 で Dにおける右辺値をrefで束縛した場合の挙動についてある程度書いてくれている。 興味深いのは、DはC++と違って参照型の変数が存在せず、関数の仮引数と戻り値 にのみrefが出現するため、右辺値を関数引数のrefで束縛しても「本質的には」 問題ない、という所かな。 とはいえ、実際には@systemな関数の内部で、ref引数からアドレスを取って グローバル変数に束縛するなどのエスケープ問題が絡んでくるので、セマンティクスを もっと詰めないと実装できない、というのが俺個人の現状認識。 結論:近いうちに状況が動く可能性は低い
- 137 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 00:30:46.53 ]
- そろそろ抜けます。このスレは時々覗いているので
面白そうな質問あったらそれなりに答えるつもりです。では。
- 138 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 00:49:20.05 ]
- 乙
- 139 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 01:47:49.82 ]
- 連想配列にclear()なりremoveAll()なりが無いのはもはや意味不明なレベル
- 140 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 01:59:45.45 ]
- いや clear あるっしょ・・・あれ、どこに書いてあったっけ?
- 141 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 02:15:36.29 ]
- dupも欲しいな
- 142 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 02:23:16.25 ]
- >>140
object.destroyのaliasでclearがあるけどこれ呼ばれてるんじゃね? >>141 dup使えたぞ ドキュメント無さそうだがww
- 143 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 02:39:50.10 ]
- マジダclearできた
替わりにこうしてた・・・ typeof(h) tmp; tmp.swap(h); で、h.dup.swap(h);がコンパイル通らなくて泣いてた
- 144 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 02:41:09.83 ]
- あれ?よく考えたらh.dup.swap(h);意味ないじゃん。何やってんだ俺
- 145 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 11:40:10.23 ]
- >>140-142
い、一体いつから… ヒャアやっぱDはたまんねぇな!
- 146 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 11:49:37.17 ]
- dupはあるんだった
何かと勘違いしたわ
- 147 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 16:28:43.01 ]
- ポトペタなRAD今作ってるからGUI厨はちょっと待ってろ
- 148 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 16:38:16.81 ]
- ♪〜(・ε・。)ヒューー
boost licで頼む
- 149 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 16:40:58.13 ]
- ポトペタとかは比較的どうでもいいんだ
まともに保守されてるだけでもぶっちぎりに優れたライブラリになれる
- 150 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 18:32:28.27 ]
- 逆に考えるんだ
唯一まともに保守されているから 公式のライブラリとして存在できていると考えるんだ
- 151 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 13:23:14.36 ]
- UDAってCTFEした値も取ってこれるのか
無茶しやがって
- 152 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 13:36:21.90 ]
- シンボルが欲しくなるな
- 153 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 23:48:43.40 ]
- templateは要素がひとつで同名って条件でtemplate名称を省略できるって
公式のどこかで見た記憶があるんだけど下の例でクラスのAをtemplate名称なしで 使えちゃうのは合法? template A(T){ class A{} T s; ←A.Aとしてclassを参照するために邪魔になると思われるもの } ※ auto x = new A!(int).A(); ではなく auto x = new A!(int)(); として使用できてしまう。
- 154 名前:前々スレ(Part29)より mailto:sage [2013/02/05(火) 23:57:39.76 ]
- 143 :営利利用に関するLR審議中@詳細は自治スレへ : 2012/04/08(日) 17:55:55.18
>>140-141 メンバ一つに限るっていう条件は 2.058 で外れたとかどこかで見たような Eponymous Template っていうらしい
- 155 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 00:06:06.75 ]
- Change Log見てもそれっぽいこと書いてないから怖いな・・
ありがとん
|

|