• Read older messages (February 17, 2008)
  • Duke[RC] has left
  • kakutani has joined
  • 12:50am (February 18, 2008) 26x26kakutani
  • (偵察)
  • mizushima has joined
  • 12:51am (February 18, 2008) 26x26mizushima
  • # 何の偵察なんでしょう…
  • kakutani has left
  • mizushima has left
  • mizushima has joined
  • walf443 has joined
  • walf443 has left
  • walf443 has joined
  • walf443 has left
  • keisuken has joined
  • 1:05am (February 18, 2008) 26x26keisuken
  • kakutaniさんまで偵察されるようになったら,下手な事いえませんなw
  • keisuken has left
  • walf443 has joined
  • mizushima has left
  • t_yano has joined
  • 2:03am (February 18, 2008) 26x26t_yano
  • なんかScalaでWicketって記事があったので貼っとく。
  • http://technically.us/code/x/the-escape-hatch
  • t_yano has left
  • tokuhirom has left
  • tokuhirom has joined
  • ujihisa has joined
  • 11:50am (February 18, 2008) 26x26ujihisa
  • (偵察)
  • keisuken has joined
  • 26x26keisuken
  • (偵察阻止)
  • keisuken has left
  • 26x26ujihisa
  • ちょwwwww
  • それだけのためにwwwwwwwww
  • Horiuchi_H has joined
  • 11:55am (February 18, 2008) 26x26Horiuchi_H
  • せっかく人が居るので、質問してもいいですかね?
  • doubleの値が整数かどうか判定するのは、どう書くのが良いんでしょう?
  • d == Math.ceil(d) で問題ないですかね?
  • 11:56am (February 18, 2008) 26x26ujihisa
  • どうなんだろう
  • 誤差を許容しない場合なんですよね
  • 26x26Horiuchi_H
  • int i = (int) d; i == d
  • とかも考えてみました。
  • 誤差は基本的には問題ないはずです。
  • keisuken has joined
  • 11:58am (February 18, 2008) 26x26keisuken
  • 範囲はどうなんでしょうか?
  • 26x26Horiuchi_H
  • d = 10000000 / 100000; の結果とかを判定したいところです。
  • 26x26keisuken
  • たとえば 1.5が1なのか2なのか?
  • ってあんまり明確な答えは持ってませんが
  • 26x26Horiuchi_H
  • いや、1.5なら整数じゃないと判定したいところです。
  • 11:59am (February 18, 2008) 26x26ujihisa
  • JavaVM詳しくないけど
  • 26x26keisuken
  • トレラントは持っておいた方がいいですね
  • 26x26ujihisa
  • 内部的に2進数でデータもってるなら
  • 丸め誤差が発生するから
  • 誤差を許容しないといけない予感
  • 26x26keisuken
  • そうそう
  • 12:00pm (February 18, 2008) 26x26ujihisa
  • d = 4/2;
  • とかなら問題ないけど
  • d = 10/5;
  • とかなら問題になるよね
  • 26x26Horiuchi_H
  • なりますかね?
  • 26x26ujihisa
  • 有理数でもってるならうまくいきそう
  • 26x26keisuken
  • BigDecimalとかなら誤差はないけどね
  • doubleya
  • やfloatは誤差を持つことがあるので要注意
  • 12:01pm (February 18, 2008) 26x26Horiuchi_H
  • double d = 10 / 5;
    System.out.println(d == Math.ceil(d));
    		double d = 10 / 5;
    		System.out.println(d == Math.ceil(d));
  • 26x26keisuken
  • (たしかこの前RubyのMLでも同様な話題が...
  • 26x26Horiuchi_H
  • この結果は trueでした
  • 結構微妙な話なのは、分かっているのですが
  • 整数な時に、String.valueOf(d) の小数点が付いて欲しくないだけなんですけどね・・・。
  • 12:03pm (February 18, 2008) 26x26keisuken
  • http://ja.wikipedia.org/wiki/IEEE_754
  • JVMはこれに従ってるはず
  • 基本的にdoubleもfloatも整数を正確に表すのには向いてないので
  • 整数かどうかを判断できない事があります
  • (だからトレラント(~=有効桁)を設けたほうがいいと
  • 12:07pm (February 18, 2008) 26x26ujihisa
  • えと
  • 12:09pm (February 18, 2008) 26x26walf443
  • 10倍して整数にキャストして10で割り切れるかどうか計算してみるとかどうですかね?
  • 12:11pm (February 18, 2008) 26x26Horiuchi_H
  • doubleをintへキャストするときって、Math.ceilと同じ処理を行っているんですかね?
  • 逆か、floorかな?
  • ujihisa has left
  • 12:15pm (February 18, 2008) 26x26walf443
  • すいません。提案しときながらしっかり覚えてませんw
  • (ふだんJavaを使ってないことがばれてしまった
  • 12:16pm (February 18, 2008) 26x26Horiuchi_H
  • file:///C:/j2sdk1.5.0/docs/ja/api/java/lang/Double.html#longValue()
  • あ、間違えた
  • Double#longValue() ってメソッドはあるんですね。
  • 整数型へのキャストと内部実装は同じっぽいけど
  • http://www.y-adagio.com/public/standards/tr_javalang/5.doc.htm#175672
  • 言語仕様 第2版
  • たぶん、ここは第3版でも変わってないでしょう・・・。
  • http://www.y-adagio.com/public/standards/tr_javalang/javalang.doc.htm#47547
  • ここのfloorメソッドの説明に、
  • 実引数の値が既に整数である場合,実引数と同じ値を返す。
  • と、ありますね。
  • keisuken has left
  • 12:26pm (February 18, 2008) 26x26Horiuchi_H
  • d == Math.floor(d) もしくは、d == Math.ceil(d) で良さそうです。
  • keisuken has joined
  • ujihisa has joined
  • 1:00pm (February 18, 2008) 26x26keisuken
  • えっと,書いておこうかな
  • 某所でWicketを使うかもしれません
  • 26x26ujihisa
  • ※スーパーkeisukenタイム
  • 1:01pm (February 18, 2008) 26x26keisuken
  • 今回はWicket単体で使うというのではなくて,Scalaで書いて,かつ,必要に応じてスクリプト言語も使うという感じにします
  • まぁあまり時間がないのでどこまで実現するのかはわかりません.
  • ということで何かあったら知恵をお貸しください.
  • 以上
  • keisuken has left
  • ujihisa has left
  • Horiuchi_H has left
  • にしお has joined
  • 8:18pm (February 18, 2008) 26x26にしお
  • 先生ー質問ーー
  • package org.nhiro.jybook.test;

    public class ScopeOfThis {
    public int a = 0;
    public int b = 100;
    public ScopeOfThis() {
    System.out.println("first:" + a);
    class Foo {
    public int a = this.a + 1; // ここ
    public Foo(){
    int a = this.a + 1;
    System.out.println(a);
    }
    }
    System.out.println("last:" + a);
    }
    public static void main(String[] args) {
    new ScopeOfThis();
    }
    }
    package org.nhiro.jybook.test;
    
    public class ScopeOfThis {
    	public int a = 0;
    	public int b = 100;
    	public ScopeOfThis() {
    		System.out.println("first:" + a);
    		class Foo {
    			public int a = this.a + 1; // ここ
    			public Foo(){
    				int a = this.a + 1;
    				System.out.println(a);
    			}
    		}
    		System.out.println("last:" + a);		
    	}
    	public static void main(String[] args) {
    		new ScopeOfThis();
    	}
    }
    
  • これの「ここ」の部分の「+ 1」を削ると
  • 「変数 a への代入は無効です。」という警告が出るようになるんですけど
  • 「+ 1」があると警告が出ないのがとても謎です。
  • 誰も来ないので落ち
  • 都元ダイスケ has joined
  • にしお has left
  • 8:26pm (February 18, 2008) 26x26都元ダイスケ
  • 「変数 a への代入は無効です。」というのは、単純に、a=a; だから意味ありません、という意味じゃないでしょうかー。
  • a=a+1;は意味があるので警告出ません。
  • public static void main(String[] args) {
    int a = 0;
    a = a;
    a = a + 1;
    }
    これで、a=aには警告出て、a=a+1に警告が出ないのと同じ理屈です。
    public static void main(String[] args) {
    	int a = 0;
    	a = a;
    	a = a + 1;
    }
    これで、a=aには警告出て、a=a+1に警告が出ないのと同じ理屈です。
  • 都元ダイスケ has left
  • kompiro has joined
  • 9:13pm (February 18, 2008) 26x26kompiro
  • a=this.aなので違う事情なのではないですか?
  • kompiro has left
  • mizushima has joined
  • Horiuchi_H has joined
  • 9:23pm (February 18, 2008) 26x26mizushima
  • いや、警告が出る理由としては同じじゃないですか?
  • 26x26Horiuchi_H
  • a と this.aが同じものを参照しているので、ダイスケさんの言うのであってると思います。
  • 都元ダイスケ has joined
  • 9:24pm (February 18, 2008) 26x26都元ダイスケ
  • ども。
  • 26x26mizushima
  • こんばんは。
  • 26x26都元ダイスケ
  • 逆に、//ここ から ScopeOfThisのフィールドにアクセスする為にはどう書いたらいいのかなぁ、と研究してましたが行き詰まりました。
  • 9:25pm (February 18, 2008) 26x26Horiuchi_H
  • ScopeOfThis.this.a で
  • 26x26都元ダイスケ
  • あ、なるほ。ど。
  • a.terada has joined
  • 9:32pm (February 18, 2008) 26x26a.terada
  • じゃばじゃー
  • 26x26Horiuchi_H
  • じゃばじゃー
  • 9:33pm (February 18, 2008) 26x26a.terada
  • 最近のeclipseってよいですね。
    にしおさんのソース書いてみたら、「public int a = this.a + 1; // ここ」で「a
    最近のeclipseってよいですね。
    にしおさんのソース書いてみたら、「public int a = this.a + 1; // ここ」で「a
  • 「a」は同じですって表示してくれました><。
  • 9:34pm (February 18, 2008) 26x26mizushima
  • 細かいところをよく解析してますよね>eclipse
  • 実際に役に立つかはともかくとして
  • 26x26Horiuchi_H
  • FindBugsとか入れると、もっと要らないところまで調べてくれますw
  • 9:35pm (February 18, 2008) 26x26a.terada
  • 個人的には普通にコーディングする分には色着いていやですw
  • 26x26mizushima
  • w
  • 9:36pm (February 18, 2008) 26x26Horiuchi_H
  • 色が付かないと、落ち着かない・・・。
  • 26x26a.terada
  • (あ、あと「int (パッケージ).ScopeOfThis.ScopeOfThis().Foo.a」とかも表示してくれるんですね…
  • 慣れ、ですねw<色とか。慣れないです。
  • 9:38pm (February 18, 2008) 26x26Horiuchi_H
  • 色が付くと、スペルが間違ってない、と安心できます^^
  • 9:41pm (February 18, 2008) 26x26a.terada
  • 始めのうちはなんで色ついてるのか不安でした…。
  • wozozo has joined
  • 9:42pm (February 18, 2008) 26x26a.terada
  • でも、慣れると、よいこと多そうですね><。
  • にしお has joined
  • 9:48pm (February 18, 2008) 26x26にしお
  • どもども
  • this.aがFoo().aでしたか、なるほど
  • thisがFooインスタンスを指すとは盲点でした
  • a = this.a + 1で「aは初期化されていない可能性があります」という警告が出ないのは、単純にそこまで解析できていないだけかな…
  • 9:52pm (February 18, 2008) 26x26Horiuchi_H
  • プリミティブなインスタンス変数は、自動的に初期化されるから、かな?
  • プリミティブでなくても、nullで初期化されるか。
  • dokhtar irani has joined
  • 9:53pm (February 18, 2008) 26x26にしお
  • いや、ローカル変数でint a = a;と書くと
  • 26x26dokhtar irani
  • hi
  • 9:54pm (February 18, 2008) 26x26にしお
  • 初期化されていない旨のコンパイルエラーになりますよ。って設定によって違うのかな??
  • 26x26dokhtar irani
  • who one know inglish?
  • english:D
  • 26x26mizushima
  • ええ。ローカル変数は明示的に初期化しなければならない
  • と言語仕様で決まっています
  • 9:55pm (February 18, 2008) 26x26dokhtar irani
  • who one know c#?
  • 26x26mizushima
  • インスタンス変数は型ごとのデフォルト値で初期化されることが言語仕様できまっています
  • 26x26dokhtar irani
  • al0o00o00o00o0o0
  • 26x26mizushima
  • 整数なら0, booleanならfalse, 参照型ならnull、など
  • 26x26にしお
  • なんと。
  • そういう仕様でしたか。
  • wozozo has left
  • 9:56pm (February 18, 2008) 26x26dokhtar irani
  • :-?
  • 26x26にしお
  • ローカル変数のが初期化不要でフィールドが初期化必須ならまだわかる気もするけど、逆なのは謎。
  • 9:57pm (February 18, 2008) 26x26Horiuchi_H