08/12/23 23:14:15
2.7.3 RC1
URLリンク(www.scala-lang.org)
はやっ
649:デフォルトの名無しさん
08/12/23 23:33:16
ちゃんと日本にも発送してくれるんだ
かなり待たされたね
で、結局Amazon.co.jpではいつまでたっても買えないんだろうか??
650:デフォルトの名無しさん
08/12/24 07:02:59
Scalaで実行時にScalaのソースファイルをコンパイルして
出来たクラスのメソッドをリフレクションで実行したい時ってどんな風に書く?
651:デフォルトの名無しさん
08/12/24 09:08:48
>>624
ほっとくとめっちゃCPU食うよ
職場着いたら部屋が微妙に暖かかった…
652:デフォルトの名無しさん
08/12/24 16:46:47
プログラミングしりとり
スレリンク(575板)l50
653:デフォルトの名無しさん
08/12/24 21:57:01
>>650
Scala コンパイラソースの
scala/tools/nsc/Interpreter.java interpret メソッド (475 - 520 行)
427 - 432 には compileSources、437 - 438 には compileString なんてメソッドも
ただし当然 scala-compiler.jar もクラスパス組み込みのこと
654:653
08/12/24 22:00:54
あと、883 - 898 の loadAndRun: メソッドで名前どおりリフレクションロード & 実行
655:デフォルトの名無しさん
08/12/24 22:11:43
>>653-654
thx!
656:デフォルトの名無しさん
08/12/25 10:19:00
URLリンク(www.ibm.com)
>trait が実際にクラスの一部として組み込まれるまで
>trait の振る舞いの定義はチェックされません。
>あるいは別の言い方をすれば、trait を使用するクラス定義の中に
>組み込まれるまで適切さをチェックされないメソッドを定義することができます。
これはどういう意味か教えてください
あとclassに出来てtraitに出来ないことってnewだけで、
他は何でも出来るという理解でいいのでしょうか
657:デフォルトの名無しさん
08/12/25 11:07:52
「late binding」ってことだけど。
C++0xだとtemplate/conceptで使うlate_checkってキーワードが増えてます。
これがないと、
> あとclassに出来てtraitに出来ないことってnewだけで、
> 他は何でも出来るという理解でいいのでしょうか
となって全く使えない。
658:657
08/12/25 11:49:07
ibm.comが調子悪かったからみれなかったけど、
具体例でちゃんと説明書いてあるじゃん。
良く読みこなそう!
C++はブロックごとに指定。
template <Semigroup T>
T add(T lhs, T rhs)
{
return x + y; // Semigroup<T>::operator+
}
template <Semigroup T>
T add(T lhs, T rhs)
{
late_check {
return x + y; // class Tのoperator+
}
}
659:デフォルトの名無しさん
08/12/25 11:53:12
C++ 0xのlate_checkはコンセプトじゃなくて
生成したソースコードで判断するというものですよね
traitはそれに近いようなことをやってるということですか?
具体的にどういうコードを書けば遅延バインディングされるんですか?
660:デフォルトの名無しさん
08/12/25 13:05:13
URLリンク(www.ibm.com)
のどの部分が分からないの?
661:デフォルトの名無しさん
08/12/25 13:10:45
>>660
>trait が実際にクラスの一部として組み込まれるまで
>trait の振る舞いの定義はチェックされません。
>あるいは別の言い方をすれば、trait を使用するクラス定義の中に
>組み込まれるまで適切さをチェックされないメソッドを定義することができます。
この文章以外は分かりました
traitのメソッドでも定義されていない変数なんかを使えば普通にコンパイルエラーになるので
適切さをチェックされないメソッドというのがどんなものなのかが分からないのです
662:デフォルトの名無しさん
08/12/26 16:30:05
trait 中の定義は、実際にはそれを実装するクラスか、あるいはスーパークラス
内のプライベートメンバとしてその本体は別名定義され、trait 中のシグネチャが
それにアクセスするゲッタセッタの形になります
また、trait からはそれが指定される位置以前のほかの trait などの名前が見え
るようになっています。このため、指定順を入れ替えると動作が変わることもあ
りえます
663:アク禁解禁
08/12/27 16:40:54
>>661
Orderd[A]の例だと
def compare(that: A): Int
の定義の存在はチェックされずに、Ordered[A]をコンパイルできます。
Object withするまで定義の存在はチェックされないわけです。
宣言の正当性はチェックされているのですが。
664:デフォルトの名無しさん
08/12/27 22:36:35
scala.xml.NodeSeqの\\メソッドでXPath式っぽいのをかけるけど
これXPathにしなかったのはなんでだろう。
素直にXPathが使えればもっと簡潔にかけるのに。
あと属性のパターンマッチできないのも中途半端。これは属性定義が順序をもたないからだろうか?
665:デフォルトの名無しさん
08/12/27 22:38:44
>>662-663
なるほどありがとうございます
666:デフォルトの名無しさん
08/12/28 10:58:57
XPathを完全に実装しようとおもったらノードの構造をZipperとかにしないといけなくなる。
667:デフォルトの名無しさん
08/12/28 20:52:47
本家サイトで XML の鉄人の参加を募集してることからして、そっちの方は
まだ十分にカバーできてないっぽい感じ
668:デフォルトの名無しさん
08/12/28 21:23:08
>>666はよく考えたら違うな。
XPathをフル実装してかつ不変な構造にしたかったら、だな。
なんか関数型言語脳になってきたのかもしれん。