Program

続ジェネリックなmax

可変長版。 scala> def max[T <% Ordered[T]](elements: T*): T = elements toList match { | case List(x) => x | case x :: rest => | val maxRest = max(rest: _*) | if (x > maxRest) x else maxRest | } max: [T](T*)(implicit (T) => Ordered[T])T sca…

ジェネリックなmax

なんか難しい。 scala> def max[T](a: T, b: T)(implicit orderer: T => Ordered[T]) = if (a > b) a else b max: [T](T,T)(implicit (T) => Ordered[T])T scala> max(1, 3) res6: Int = 3 scala> max(10, 3) res7: Int = 10 scala> max(10., 3.) res8: Doub…

ソート

scala> List(3, 6, 2, 6, 3, 0, 5, 1) sort(_ < _) foreach print 01233566 ほー。

名前渡しパラメータ

面白い。 scala> def add(a: Int, b: Int) = b + a add: (Int,Int)Int scala> def aa() = { println("aa"); 1 } aa: ()Int scala> def bb() = { println("bb"); 3 } bb: ()Int scala> println(add(aa(), bb())) aa bb 4 scala> def add_(a: => Int, b: => In…

隠蔽されたフィールドへのアクセス

親は super でできるけど、その上にはいけるのだろうかと。 できるらしい。 class A { int a = 1; } class B extends A { String a = "B#a"; } class C extends B { A a = new A(); void hoge() { System.out.println(a); // C#a System.out.println(super.a…

さーて来週のコンピ研OO勉強会は?

簡単な文字列処理やります。 "カモメカモメカチンカチン".replace("カ", "") とか。 サーセンww

CollectionのtoArray

CollectionインタフェースのtoArrayメソッドは、引数なしでObjectの配列を返す奴と、ある型Tの配列を引数に取ってTの配列を返す奴がある。 なんで、引数なしの奴はTの配列を返さないんだろうと思ってたが、 T[] result = new T[size]; とか出来ないのか。 で…

fluent interface

メモ。 http://capsctrl.que.jp/kdmsnr/wiki/bliki/?FluentInterface

TableTree

Eclipseのビュー作ってて、展開できる表欲しいなと思って、 org.eclipse.jface.viewers.TableTreeViewer と org.eclipse.swt.custom.TableTree 使おうと思ったら非推奨だった。 代わりに、 org.eclipse.jface.viewers.TreeViewer org.eclipse.swt.widgets.Tr…

jMock

Bさんから勧められて。 なかなか面白そうだから、調べておこう。 とりあえずメモ。http://www.jmock.org/ http://d.hatena.ne.jp/devbankh/201002 http://www.limy.org/program/java/jmock/what.html http://www.itarchitect.jp/print/?menu3=34462 Bさんか…

Eclipseのコンソール

プラグイン作ってて、ちょっとコンソールに出したいなと思って、 普通に標準出力に出したら、プラグイン制作側のコンソールに出てきた。 で、プラグイン組み込み側のコンソールに出す方法を見つけたので、とりあえずメモ。 必須プラグインに org.eclipse.ui.…

テス・・・ト・・・?

友人の研究室で強制されているらしいテストが面白かった。(ネタとして)*1 例えば、こんな感じのクラスがあったとする。 public class Hoge { private String hoge; public Hoge(String hoge) { this.hoge = hoge; } public String getHoge() { return hoge; …

バグ

再現性のないバグって怖くね? こんなにも文字化けを望んだのは初めてだ・・・な ぜ 化 け な い ?

初期化子

static初期化子は知ってたけど、インスタンス初期化子は知らなかった・・・ ってわけで、挙動確認。 class A { static { System.out.println("a s_init"); } { System.out.println("a init"); } A() { System.out.println("a cons"); } } class B extends A …

Eclipseのリファクタリングの中 (続々々)

前回見つけた、 org.eclipse.jdt.internal.corext.refactoring.RefactoringExecutionStarter を使おうとしたところ、推奨されないアクセスって警告が出た。 やっぱinternalはまずかったのか。 ってことで、いっこ上がって、 org.eclipse.jdt.ui.actions の中…

Eclipseのリファクタリングの中 (続々)

前回のパッケージの中には、なんか定数しか入ってなくて、 内部パッケージ名も「記述子」だった。 で、前々回のパッケージとかを読んでると、 org.eclipse.jdt.internal.corext.refactoring.RefactoringExecutionStarterがリファクタリング使うときの入り口…

Eclipseの中見るの補助

Plug-in Spy なるのもが、3.4から入るそうで。 3.4入れようかな・・・ 本家がRC3で、PleiadesがM6か。 ・・・て、RC3にPleiadesプラグイン入れればいいのか。

Eclipseのリファクタリングの中 (続)

リファクタリングの中身はどこにあるんだろうの3回目。 もうちょい調べたところ、 org.eclipse.jdt.core.manipulation の中に、 org.eclipse.jdt.core.refactoring なるパッケージを発見。 あのサイトにはこんなのなかったのに・・・(見つけたのはPDE) こい…

Eclipseのリファクタリングの中

リファクタリングの中身はどこにあるんだろうの2回目。 リファクタリングやってるのは、 org.eclipse.jdt.internal.corext.refactoring.(種別).(リファクタリングクラス) こいつらっぽい。 よし。 こいつらは全部publicクラス。 コンストラクタで要素等を指…

public static void main

久々にC++でプログラム組んでみた。 動作としては、コマンドラインから与えられた文字列群を出力する。(呼び出し名含む) ただそれだけ。 main.cpp #include <vector> #include <string> #include <algorithm> #include "hoge.h" int main(int arg_num, char** arg_values) try { std::ve</algorithm></string></vector>…

部屋の中のライト

ごろごろしてて思い浮かんだこと。 部屋の中にライトがあって、 /** 部屋 */ class Room { /** ライト */ private Light light; ・・・ で、ライトを取得する。 /** * 新世界の神を取得します。 * @return 月 */ public Light getLight() { なんだこれ。

掘り出し物1

ちょっと昔のプログラムあさってたら、そういやこんなのあったなぁってのが出てきた。 向きを表すクラス (by C++)direction.h #ifndef DIRECTION_H_INCLUDED #define DIRECTION_H_INCLUDED namespace laserbox { class direction; } class laserbox::directi…

Eclipseの中

なんか研究でEclipseプラグイン作りそうな。 で、Eclipseに入ってるリファクタリングを、自作プラグイン側から使いたいのだが、どこにあるのか分からない。少し調べたところ、org.eclipse.jdt.ui.actionsにそれっぽいのが沢山あった。 で、もう少し調べたと…

掘り出し物2

std::copyの使い方を確かめるやつが出てきた。 #include <iostream> #include <fstream> #include <list> #include <sstream> #include <iterator> #include <string> int main(void) { using std::istream_iterator; using std::ostream_iterator; using std::back_inserter { std::list<int> in, out; for (int i = 0</int></string></iterator></sstream></list></fstream></iostream>…

ド・モルガン

やっぱド・モルガン分かってないとSQLなんて使えっこないよなぁ。って、副問書いてて思った。