- 動的言語で大規模開発
531 :デフォルトの名無しさん[sage]:2014/11/30(日) 10:46:49.86 ID:/BRxH/wW - >>529
もうちょっと汎用的なメソッドを定義する場合、MyClassみたいな具象型よりも Interfaceや型クラスを指定することが多いね それで必要なだけの汎用性と静的型を両立できる
|
- 動的言語で大規模開発
539 :デフォルトの名無しさん[sage]:2014/11/30(日) 15:35:01.93 ID:/BRxH/wW - REPLとかで「このオブジェクトって何ができるんだっけ?」って調べるのは
動的言語では典型的な開発手法で、恩恵に預かってる開発者は多いと思うけど 静的型の補完も一緒だよ 単純にタイプ数をちょっと減らすとか、そういう話じゃない
|
- 動的言語で大規模開発
544 :デフォルトの名無しさん[sage]:2014/11/30(日) 16:33:33.88 ID:/BRxH/wW - >>543
静的型と動的型で同じ「Rename method」というリファクタリング機能をサポートしていると言っても、 動的型のそれは http.connect のメソッド名を変更したら 無関係な db.connect のメソッド名も変わってしまうような代物だろう
|
- 動的言語で大規模開発
565 :デフォルトの名無しさん[sage]:2014/11/30(日) 18:44:16.77 ID:/BRxH/wW - function foo(a) {
a.bar() } bar() を呼び出せるなら何でも foo の引数に入れられるのが ダックタイピングというのはどうだろうか このスレだけでも
|
- 動的言語で大規模開発
568 :デフォルトの名無しさん[sage]:2014/11/30(日) 19:32:01.35 ID:/BRxH/wW - >>566
ただし、継承関係や共通のインターフェースを持たなくても bar() を呼び出せるなら foo に入れられなくてはならない
|
- 動的言語で大規模開発
587 :デフォルトの名無しさん[sage]:2014/11/30(日) 20:30:01.03 ID:/BRxH/wW - >>581
Interfaceも構造的部分型も実行時に動的に分岐する そうでなければポリモーフィズムとは言わない さらに言えば、構造的部分型は「アヒルというクラス」に対して分類してるわけでもない
|
- 動的言語で大規模開発
593 :デフォルトの名無しさん[sage]:2014/11/30(日) 20:40:02.67 ID:/BRxH/wW - >>590
実行時にvalidationするのがダックタイピングというなら 構造的部分型は確かに違うな "If it walks like a duck and quacks like a duck, it must be a duck" という文章からそのような意味を読み取るのは無理だが
|
- 動的言語で大規模開発
596 :デフォルトの名無しさん[sage]:2014/11/30(日) 20:43:21.18 ID:/BRxH/wW - >>592
Haskellの型クラス、Rustのトレイト等が それらの問題点を解決している
|
- 動的言語で大規模開発
603 :デフォルトの名無しさん[sage]:2014/11/30(日) 21:05:38.46 ID:/BRxH/wW - >>597
静的型でも振る舞うのは実行時だろ チェック自体はコンパイル時だが で、どこに実行時にチェックすると書いてある?
|
- 動的言語で大規模開発
618 :デフォルトの名無しさん[sage]:2014/11/30(日) 22:55:36.39 ID:/BRxH/wW - >>615
> 両者の間に直接的な関連性は無い(言い換えるとスレチな話題) スレの主題に沿っているのは補完や型チェックの方だけど
|
- 動的言語で大規模開発
624 :デフォルトの名無しさん[sage]:2014/11/30(日) 23:22:20.73 ID:/BRxH/wW - >>621
そうか。じゃあスレ違いの話は止めないと荒らしになってしまうな
|
- 動的言語で大規模開発
629 :デフォルトの名無しさん[sage]:2014/11/30(日) 23:44:44.78 ID:/BRxH/wW - >>616
http://neopythonic.blogspot.jp/2008/10/why-explicit-self-has-to-stay.html ・ただの関数を、後からクラスにメソッドとして後付けできること(そのとき暗黙のselfの扱い) ・decoratorがあるから(動的にstatic methodやclass methodに変更できる) というのが理由だそうだ
|
- 動的言語で大規模開発
633 :デフォルトの名無しさん[sage]:2014/11/30(日) 23:53:34.74 ID:/BRxH/wW - 言語だけでいうならRustに期待しているんだが……
|