TypeScript part4 (381レス)
TypeScript part4 http://mevius.5ch.net/test/read.cgi/tech/1640872622/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
58: デフォルトの名無しさん [sage] 2022/02/07(月) 11:40:42.69 ID:RorkGoUL いやでもわかるわ json serializable / deserializable で、かつ this 参照可能な method 生えてれば、カプセル化というかコードの凝縮度上げられるのになとは思う まぁそういう toJSON, fromJSON を実装すれば的な話ではあるが type Human に getFullName 実装したい時に POD だと getFullName(h: Human) みたいになって getFullName(h) じゃなく h.getFullName() みたいにしたかったのに みたいな http://mevius.5ch.net/test/read.cgi/tech/1640872622/58
65: デフォルトの名無しさん [sage] 2022/02/07(月) 12:59:32.42 ID:yhez4jOW >>58 > getFullName(h) じゃなく > h.getFullName() みたいにしたかったのに > みたいな それはC#で言う拡張メソッドだね。staticメソッドをインスタンスメソッドとして『記述出来る』 Goは逆にメソッドをstaticとして呼べたはずだけど。 この辺は『どう書きたいか』であり、文法の問題であって、(本来は)コード構造の問題ではない。 C#はこの辺の文法とコード構造を分離した。 つまり、メソッドとして書きたいからクラスにします、ではなく、 メソッドとして書きたければメソッドとして書ける文法(拡張メソッド)を用意した。 まあ実際はただのパッチだけどね。何故かは知らんが.NETは無駄にstaticメソッドが多くてウザイのは事実だから。 (ただ今見てみるとC#のはPODでは駄目っぽいが) Rubyはこの辺、プリミティブなしで全部オブジェクトだから、数字にもメソッドを生やせるし、出来る素地はある。 (やってないと思うけど) だからJSでやるならボックス化+拡張メソッドで、ということになる。 再度言うがこの辺は文法の話(に出来る話)であって、(本来は)コード構造の話ではないよ。 http://mevius.5ch.net/test/read.cgi/tech/1640872622/65
97: デフォルトの名無しさん [sage] 2022/02/07(月) 21:20:10.49 ID:yhez4jOW >>58 そういえば > fromJSON ではなくて、reviver関数な。 https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse > getFullName(h) じゃなく > h.getFullName() みたいにしたかったのに > みたいな あと、出来る/出来ないで言えば、これは出来るよ。勿論禁じ手だが Object.prototype.getFullName = function(){return this.firstName+this.familyName;}; var h = {firstName:'Java', familyName:'Script'}; h.getFullName(); // "JavaScript" とか。問題は、JSはこれを行うように設計されてるのに、事実上使えない点で、 プロトタイプ拡張がもうちょっとローカルに出来る仕組みが導入されたら言語としては面白くなるとは思うよ。 (俺は知らないけど、)prototype.js時代は楽しかっただろうとも想像出来る。 それぞれのclassをちゃんと整備する方が正道ではあるのだけどね。 http://mevius.5ch.net/test/read.cgi/tech/1640872622/97
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.022s