Valaについて語りませんか
■ このスレッドは過去ログ倉庫に格納されています
0001login:Penguin
2009/07/05(日) 14:31:59ID:IdyQQEIy【GNOME Live!】
Vala
http://live.gnome.org/Vala
Tutorial
http://live.gnome.org/Vala/Tutorial
【SourceForge】
ValaによるGNOMEアプリケーションのプログラミング
http://sourceforge.jp/magazine/08/12/15/0143207
0082login:Penguin
2009/12/13(日) 19:50:40ID:BMvvMM6L0083login:Penguin
2009/12/20(日) 16:13:54ID:0O/mIIzOVala 0.7.9
released on December 19, 2009
Changes
* Support array and string slicing.
* Add --symbols commandline option.
* Add avahi-gobject bindings (Sebastian Noack).
* Add ccss-1 bindings (Ali Sabil).
* Add libarchive bindings (Julian Andres Klode).
* Add libmagic bindings (Jens Georg).
* Add readline bindings (Jukka-Pekka Iivonen).
* Add twitter-glib-1.0 bindings (Adrien Bustany).
* Many bug fixes and binding updates.
git repositoryにはあったようだけれど、
公式?が更新されてWindows版バイナリもDL出来る状態だったので一応報告
0084login:Penguin
2009/12/21(月) 02:33:26ID:2kmz3FOO* Support array and string slicing.
これはどういうことだ?
0085login:Penguin
2009/12/21(月) 02:47:50ID:2kmz3FOO// slices
t = s[2:4];
assert (t.length == 2);
assert (t[0] == 'l');
assert (t[1] == 'l');
っていうことだな。
0086login:Penguin
2009/12/27(日) 19:03:24ID:nUx8bWnYt of `null'
window.destroy.connect (Gtk.main_quit);
^^^^^^^^^^^^^^^^^^^^^^
gtk-button.vala:10.5-10.26: error: The name `connect' does not exist in the cont
ext of `null'
button.clicked.connect ((source) => {
^^^^^^^^^^^^^^^^^^^^^^
Compilation failed: 2 error(s), 0 warning(s)
0.5.4 でコンパイルしてみたらエラーが出て通らなかた
イベントハンドルは += ではなくてなるべく connect を
使うのが推奨されてる…とかどこかで読んだような記憶があるようなないような…
0087login:Penguin
2010/01/01(金) 00:06:48ID:sfh07iOR今年こそ1.0がリリースされますように( ̄人 ̄)
0088login:Penguin
2010/01/05(火) 02:22:15ID:68YcuKLZしかし古いバージョン使ってるな。今の最新は0.7.9なんでそれで
一回コンパイルしてみ。
0089login:Penguin
2010/01/06(水) 02:08:55ID:sJSR3xqjsimple な静的 html 出力ツール
http://entitycrisis.blogspot.com/2009/08/simple-pygame-wrapper.html
http://billmill.org/multi_line_lambdas.html
http://mail.python.org/pipermail/python-dev/2006-February/060654.html
下から順に時系列で、なんとなく流れとして
0090login:Penguin
2010/01/14(木) 13:47:25ID:f9MyO6F7using System;
using System.Text.RegularExpressions;
class HelloWorld {
public static void Main() {
System.IO.StreamReader sr = new System.IO.StreamReader(@".\\hello.gs");
//内容をすべて読み込む
string gscode = sr.ReadToEnd();
//閉じる
sr.Close();
Console.WriteLine(gscode);
Regex r = new Regex(@"\(.*?\)", RegexOptions.Singleline);
System.Text.RegularExpressions.MatchCollection mc = r.Matches(gscode);
foreach (System.Text.RegularExpressions.Match m in mc)
{
//正規表現に一致したグループを表示
Console.WriteLine(m.Value);
string before = m.Value;
string after = before.Replace("\r\n", "").Replace(" ", "");
gscode = gscode.Replace(before, after);
}
Console.WriteLine(gscode);
}
}
>csc hello.cs
これと等価なコードって vala だとどう書いたらいいか
わからないんだよな…
0091login:Penguin
2010/01/14(木) 13:52:45ID:f9MyO6F7def foo(arg1: string, arg2: string): string
return arg1 + arg2
init
print foo(
"hello ",
"world"
)
print foo("hello ",
"world")
/* EOF */[indent=4]
def foo(arg1: string, arg2: string): string
return arg1 + arg2
init
print foo(
"hello ",
"world"
)
print foo("hello ",
"world")
/* EOF */
hello.gs はこんなかんじ
空白は半角に置換しないと動かないかも…
0092login:Penguin
2010/01/14(木) 13:58:24ID:f9MyO6F70093login:Penguin
2010/01/30(土) 14:42:11ID:0hh2Dj8z次期 lightwave はQTなんだな...
COLLADAにBulletにPython載るとか
C単体でトランスレータで組むのは
厳しいというが現状という...
0094login:Penguin
2010/02/11(木) 08:53:33ID:OAcrTRrZvapi is simple. or vapi maintenance is hard and hard ...
0095login:Penguin
2010/02/13(土) 17:13:42ID:fQoCmgtg乙
0096login:Penguin
2010/04/02(金) 00:33:45ID:rvSB9vMKexperimental な機能以外はバグフィックスが主なリリースだな。
0097login:Penguin
2010/04/16(金) 19:47:55ID:/6r9tkwKexport GOROOT=$HOME/go
export GOARCH=386
export GOOS=linux
$hg clone -r release https://go.googlecode.com/hg/ $GOROOT
$cd $GOROOT/src
$./all.bash
Note: fedora case selinux error:
http://groups.google.com/group/golang-nuts/browse_thread/thread/5ffcecb0814b01b8
$hg clone https://gobuild.googlecode.com/hg/ gobuild
$make
error: gobuild.go:62: undefined: os.Dir
edit: os.Dir -> os.PathInfo
$make
$cp gobuild $HOME/bin
$hg clone https://gopages.googlecode.com/hg/ gopages
$cd gopages
$gobuild gopages.go
$cp gopages $HOME/bin
$gobuild main.go
$./main
gopages serving on :9999
0099login:Penguin
2010/04/21(水) 01:15:16ID:nUefU5z/意外とすっきり書けないな。
一番シンプルに書こうとするとどんな感じになるかな?
0100login:Penguin
2010/04/21(水) 01:41:59ID:nUefU5z/var file = new MappedFile ("hoge.txt", false);
var text = (string) file.get_contents ();
でいいかな。
0101login:Penguin
2010/04/22(木) 23:52:50ID:Nm7c6dz1http://gitorious.org/lethal-works/valagtkdoc/blobs/master/sectionsgenerator.vala
--pkg vala-1.0
参考になるかも
0102login:Penguin
2010/04/25(日) 01:04:30ID:j8R9B01zやっぱりMappedFileで良さそうだ。
0103login:Penguin
2010/05/01(土) 18:58:09ID:lTmE6Ym2ちょっと遅いけど。
http://live.gnome.org/Vala/GIOSamples
こっちの方が、順次データを読み取っていく分でかいファイルを扱う時に良さげ。
0104login:Penguin
2010/06/08(火) 02:51:18ID:RC5oVszEint[] a = { };
a += 1;
a += 1;
}
これをCに変換すると
static void _vala_array_add1 (gint** array, int* length, int* size, gint value) {
if ((*length) == (*size)) {
*size = (*size) ? (2 * (*size)) : 4;
*array = g_renew (gint, *array, *size);
}
(*array)[(*length)++] = value;
}
static void _vala_array_add2 (gint** array, int* length, int* size, gint value) {
if ((*length) == (*size)) {
*size = (*size) ? (2 * (*size)) : 4;
*array = g_renew (gint, *array, *size);
}
(*array)[(*length)++] = value;
}
と全く同じ関数が2つ出来るのは無駄過ぎる…。バグだよなぁ。
0105login:Penguin
2010/06/08(火) 23:45:06ID:RC5oVszE今年中に 1.0 のリリースもあるかな。
0106login:Penguin
2010/06/22(火) 00:49:34ID:TjdwcnPd0107login:Penguin
2010/07/22(木) 10:29:41ID:14B/bjH40.9.3 リリース記念上げ!
0108login:Penguin
2010/08/01(日) 23:45:56ID:9Z4W30qB0109login:Penguin
2010/08/11(水) 09:30:49ID:biiTT6x90110login:Penguin
2010/08/16(月) 13:38:29ID:+2cG0APL0111login:Penguin
2010/09/04(土) 09:53:44ID:QHFWA8090112login:Penguin
2010/09/06(月) 23:38:41ID:me8osAkX0113login:Penguin
2010/09/06(月) 23:47:04ID:me8osAkX>>109
リファレンスカウントだよ。
>>111
インライン関数は、-O3でコンパイルすればコンパイラの判断で小さい関数は
インラインになるから、特別必要ではないかな。
マクロは使わずにジェネリックスを使うべし。
インラインアセンブラもCの関数内に書いて、Valaにインポート(.vapi)するので
いいんじゃない?
0114login:Penguin
2010/09/08(水) 15:47:24ID:0olPHVFEValaの言語仕様見たら、これでもうC++,C#いらないんじゃない?
0115login:Penguin
2010/09/10(金) 00:42:35ID:CnYQUcwLいらなくなるって事はないだろうけど、C++,C#の良いとこ取りで
ある事には違いない。
それに、C++はライブラリを作ってもC++からしか(直接)呼び出せないけど、
Valaでクラスライブラリを作ってもCからも使えるのが最高。
0116login:Penguin
2010/09/10(金) 08:06:49ID:luUlP4sjsjis->utf8で、iconvと同じで〜とかが入ってると死ぬ
0117login:Penguin
2010/09/11(土) 01:16:19ID:m+SVumir0118login:Penguin
2010/09/11(土) 01:25:28ID:80Xsc9fhValaで文字コードの変換をやった事がないんでよく分からん。
まぁ、基本UTF-8だからね…
>>117
まったく必要ないよ。C#にそっくりだけど、C#を知っている必要もないし。
0119login:Penguin
2010/09/11(土) 21:16:11ID:bAfz4iHt複数のファイルにわけたくなった場合の分割コンパイルってどうやるの?
0120login:Penguin
2010/09/11(土) 23:23:42ID:80Xsc9fh・必ず valac -C *.vala(全部のValaソース) を実行する
valac は内容が同じだと *.c のタイムスタンプを更新しない
それに、必ず全Valaソースを valac に掛けないと、ちゃんと*.cが出来ない
・更新された *.c をCコンパイラでコンパイルする
その時にヘッダーファイルはいらないようになってる。
(使っているライブラリのはいる)
・で、出来た *.o をリンクする
って感じかな。
0121login:Penguin
2010/09/12(日) 18:31:31ID:FtkVyF/Q0122login:Penguin
2010/09/13(月) 21:43:56ID:sTXZUSGC感覚的には、g++よりはだいぶ早いよ。
だた巨大なプロジェクトだとどうなるか分からん。
0123login:Penguin
2010/09/14(火) 22:01:58ID:q84SH/q/array.sort(〜);
ってやらせてほしい。最新版だとできるのかもしれないけど。
0124login:Penguin
2010/09/14(火) 23:46:50ID:v9kG5jgmダサイんで、その辺りでもっとモダンなAPIを使いたかったら
ttp://live.gnome.org/Libgee
がいいよ。
0125login:Penguin
2010/09/14(火) 23:52:59ID:q84SH/q/0126login:Penguin
2010/09/15(水) 00:29:40ID:GF+yTf6g標準でついてくる事はなさそう。
Array がもっと洗練されたインターフェースになれば必要なくなるのに。
0127login:Penguin
2010/09/15(水) 23:28:28ID:e37Wp/kJ0128login:Penguin
2010/09/16(木) 07:53:18ID:aySYUnZ70129login:Penguin
2010/09/18(土) 01:37:41ID:8ySMdkovprintf にファイル名と行番号を一緒に表示したい時とかあっても、
Vala は __FILE__ や __LINE__ とかが使えない。そこで、
message ("hoge");
ってやれば、
** Message: hoge.vala:15: hoge
みたいに、ファイル名と行番号が表示されるよ。
0130login:Penguin
2010/09/18(土) 02:14:47ID:8ySMdkov今一番デカい Vala 使ったプロジェクトって何か分からないけど、
Vala 自身が結構デカいんで、>>120の速度を検証してみた。
vala-0.9.8/vala/ 以下に *.vala が145ファイルあって、全く
依存性のない valacomment.vala を日付だけ変えて make を
したところ、valac に145ファイルを一気に渡してるけど、
その時間が10秒ぐらい掛かってた。(core2 duo 2.16GHz)
その後のビルドは gcc なんで、g++ に比べるとかなり早い。
まぁ、ちゃんと細かくライブラリに分けて valac にあまり
ファイルを渡さないようにするのが吉だな。
0131login:Penguin
2010/09/18(土) 08:03:56ID:ZMH1fM+OLog.FILEとLog.LINEでおk
0132login:Penguin
2010/09/18(土) 13:57:49ID:dKwk8Vzz0133login:Penguin
2010/09/19(日) 00:09:32ID:bLHejXEbおぉ、それは知らなんだ。ありがとう。
0134login:Penguin
2010/09/19(日) 08:12:10ID:bLHejXEb0135login:Penguin
2010/09/25(土) 06:12:27ID:auRxQl39関数だけしか自動的にインラインにならなかった。
だから、インライン関数はやっぱりValaが対応してくれないと駄目だね。
場合によっては、パフォーマンスに大きく影響する所だから早めに対応して欲しいな。
0136login:Penguin
2010/10/13(水) 01:01:14ID:uqtJdPnG0.11.0 リリース記念上げ!
0137login:Penguin
2010/10/13(水) 17:24:27ID:yOuawncH0138login:Penguin
2010/10/15(金) 10:02:51ID:vZDRagAZ脱mono&.netって流れですな。
こりゃ吉報だ
0139login:Penguin
2010/10/16(土) 13:10:02ID:ArVLh3zFおぉ、Valaが少しずつ浸透していってうれしいなぁ。
後はGTK+とWindowsの相性がもっと良くなってくれればいいんだが。
0140login:Penguin
2010/10/27(水) 01:52:27ID:uug/Y6Unなぜ 0.12 じゃないのか分からん…
0141login:Penguin
2010/10/27(水) 08:19:44ID:zAy76E0jそれかバージョンの上げ方を変えたとか
0142login:Penguin
2010/10/28(木) 02:52:40ID:tk8GPYzV0.11 が開発ブランチで、0.10 が安定ブランチらしい。
そんで、0.12 が 1.0 になるかもだって。
0143login:Penguin
2010/11/10(水) 00:38:44ID:ygmS3jMN基本的にバグフィックスバージョンだけど、
出力されるCのソースが綺麗になった気がする。
0144login:Penguin
2010/11/23(火) 02:17:51ID:McaRlFmivoid main()
{
string name = "焼肉定食";
for (string utf8 = name; utf8.length > 0; utf8 = utf8.next_char()) {
unichar chr = utf8.get_char();
stdout.printf("%s\n", chr.to_string());
}
}
0145login:Penguin
2010/12/05(日) 04:35:31ID:DrFQ2hQ20146login:Penguin
2010/12/05(日) 05:07:33ID:bhyZjHqe>>137で既出なんだけど、こういうGTK+のアプリを作るにはうってつけなんだよね。
0147login:Penguin
2010/12/05(日) 05:16:17ID:bhyZjHqeCに変換して g_strdup がやたら使われていたら大抵 unowned のし忘れだね。
最近 const も使えるようになったんで使ってみた。
void main()
{
const string name = "焼肉定食";
for (unowned string utf8 = name; utf8.length > 0; utf8 = utf8.next_char()) {
unichar chr = utf8.get_char();
stdout.printf("%s\n", chr.to_string());
}
}
0148login:Penguin
2010/12/13(月) 21:33:08ID:smRVrdmh0149login:Penguin
2010/12/21(火) 01:12:22ID:ABvoFodsnamespace Binary {
struct Bin {
int param0;
float param1;
}
static int main (string[] args) {
var bin = Bin ();
bin.param0 = 321;
bin.param1 = 456.0f;
try {
// 書き込み
FileUtils.set_contents ("data.bin", (string) (&bin), (ssize_t) sizeof (Bin));
// 読み込み
var file = new MappedFile ("data.bin", false);
Bin* bin_in = (Bin*) file.get_contents ();
print ("%d:%.2f\n", bin_in.param0, bin_in.param1);
} catch (Error e) {
print ("%s\n", e.message);
}
return 0;
}
}
0150login:Penguin
2010/12/30(木) 02:30:08ID:TDGgyZNrあるんで、メモリリークせずにちゃんと書こうとしたらスゲー大変。
(別に GLib が悪いという訳ではない)
Vala は C 並の速度でありながらメモリリークを気にしなくていいんで、
それだけでもすんげー便利なんだよね。
0151login:Penguin
2011/01/01(土) 00:08:35ID:I3WGYOP1今年も Vala の進化が楽しみだね。
0152login:Penguin
2011/01/10(月) 04:18:42ID:DHLV8UY4新機能が追加されなくなってきたんで、1.0のリリースが近いのかも。
0153login:Penguin
2011/01/16(日) 10:24:21ID:8UPlgNHyなんとなくだけど、しばらく停滞するんじゃないべか…
という希ガス
0154login:Penguin
2011/01/19(水) 00:53:33ID:AHjWAb2gただ、停滞も安定もして欲しくないけどね
0155login:Penguin
2011/02/01(火) 00:53:13ID:wZrZvTv6どうやって決定されるんだ?
インクルードして欲しいファイルがインクルードされずにちょっと困ってる…
0156login:Penguin
2011/02/01(火) 12:34:11ID:tDJ1c7gg0157login:Penguin
2011/02/05(土) 23:27:54ID:+01ndB4Nありがとう。vapiにそれが足りないだけだった。
0158login:Penguin
2011/02/06(日) 16:09:57ID:f8dHhTIQhttp://opencobol.no-ip.org/download.html
http://itpro.nikkeibp.co.jp/article/Watcher/20101119/354329/
http://www.lancard.com/diary/
http://jp.opencobol.org/modules/newbb/viewtopic.php?topic_id=148&forum=1&viewmode=flat&order=ASC&start=0
継続は力なり帳票は文化なりと…
0159login:Penguin
2011/02/16(水) 01:18:26ID:qQvuhHNhだいぶ安定してきたなぁ
0160login:Penguin
2011/02/16(水) 01:31:17ID:qQvuhHNhfor (int i = 0; i < 10; ++i) {
if (i == 3) {
print ("test\n");
}
}
は
gint i;
i = 0;
{
gboolean _tmp0_;
_tmp0_ = TRUE;
while (TRUE) {
if (!_tmp0_) {
i = i + 1;
}
_tmp0_ = FALSE;
if (!(i < 10)) {
break;
}
if (i == 3) {
g_print ("test\n");
}
}
}
となるけど、アセンブラにするとほぼ同じになる。
0161login:Penguin
2011/02/20(日) 19:34:08.24ID:gtuQ5lXOMonoとの比較結果が出てるけど、個人的にはValaの方が圧倒的かなと
思ってたんで、ちょっと意外だった。まあgobject自体そんなに
軽い代物じゃないから仕方ないかもしれないけど。
このレポートに対応して、g_signal関連の修正が入るみたいだし、
結果的にはよかったね。
0162login:Penguin
2011/02/21(月) 23:51:29.57ID:xkookBj5Valaのお陰で他のオブジェクトシステムと簡単に比較出来るようになったんで
GObjectの重さが露呈されてきたと思う。
やっぱりベースの部分なんで、どんどんチューニングして欲しいもんだ。
0163login:Penguin
2011/02/28(月) 00:46:09.95ID:pa7jLov5けど、シンタックスだけ同じでベースがgobjectじゃないvalaっぽい言語が欲っしいなっ。
0164login:Penguin
2011/03/01(火) 00:21:13.12ID:fI1dwocMDova profileってのがあるよ。
Valaだけを使って、glib、gobjectを再実装している。
それはそうと、Genericsが未完成過ぎて泣けてくる…
0165login:Penguin
2011/03/02(水) 01:23:52.25ID:W0TOUp0F0166正義の下着:コスモパンティー
2011/03/06(日) 10:12:39.50ID:VJ0f/vyY感じてます。
0167login:Penguin
2011/03/08(火) 00:55:14.96ID:Qg/iQa8QこれはValaもGenieも同じ。
[indent=4]
init
Intl.setlocale (LocaleCategory.ALL, "")
var f = new Foo ()
print f.bar ("世界")
class Foo : Object
def static bar (name : string) : string
return "こんにちわ " + name
0168login:Penguin
2011/03/08(火) 00:56:36.53ID:Qg/iQa8Qじゃなくて
> return "こんにちは " + name
だった…
0169login:Penguin
2011/03/18(金) 09:16:24.29ID:7nzfGrJF0170login:Penguin
2011/03/19(土) 08:02:59.57ID:3X5j4uKlで、C# にあって Vala にない機能一覧があるけど、それぞれ私見を書いてみた。
Not Available
* No LINQ (not planned for 1.0, maybe later)
-> 実装待ち
* No operator overloading (vala-list)
-> あって欲しい…。ただ、[](インデクサー)は追加出来る
* No method or constructor overloading (use different method names / named constructors instead, as described above)
-> 別名関数とオプショナル引数を使う事で問題無し
どうしてもというなら、method overloading は GValue を使うことで可能 (http://mail.gnome.org/archives/vala-list/2008-July/msg00017.html)
* No extension methods
-> 通常使うべきでない機能 (http://www.atmarkit.co.jp/fdotnet/csharp30/csharp30_05/csharp30_05_01.html)
* No constraints on generic type parameters (i.e. no where)
-> あって欲しい…
* No generic delegates
-> 現状で使用可能 (0.9.3 で追加)
* No generators (yield return, planned)
-> 実装待ち
* No variable length argument lists (params, planned), for C-Bindings already possible, e.g. stdout.printf(string format, ...)
-> 現状で使用可能
* No conversion operators (i.e. no explicit and implicit)
-> あった方がいいが、obj.to_hoge() を都度追加するようにすれば問題無し
* No partial classes and methods
-> 通常使うべきでない機能 (Vala のソースを自動生成するツールには必要かもしれないけど)
0171login:Penguin
2011/03/19(土) 08:04:03.51ID:3X5j4uKl* No sealed classes (planned)
-> 実装待ち (無くても問題ないけど)
* No static classes (use nested namespaces instead. Vala supports namespace methods, they are implicitly static)
-> ネームスペースを使えば問題無し
* No goto, no labeled statements
-> 特に問題なし。goto はエラー処理で便利だが、例外を使えばいい
* No constructor initializers
-> base が使えるので問題無いはずだが…
* No bounds checking for arrays (optional support planned)
-> 実装待ち (これに頼らず、ちゃんと assert を仕込むべき)
* No checked, unchecked, fixed, stackalloc, readonly
-> checked, unchecked は特殊用途でしか不要なはず
-> fixed はガベージコレクションの方法が違うので、そもそも不要
-> stackalloc は大体同じ事がより直感的に可能なので不要
-> readonly はプロパティを使えば可能だが、オーバーヘッドはデカいのであった方がいい機能
実装予定機能
* LINQ (1.0 以降)
* generators
* sealed classes
* bounds checking for arrays
実装して欲しい機能
* operator overloading
* constraints on generic type parameters
0172170
2011/03/21(月) 08:55:03.50ID:qRJv0v7yこれは
> -> readonly はプロパティを使えば可能 (若干オーバーヘッドが大きい)
だね。間接参照が入るだけなんで、デカいという程じゃなかった。
実装予定機能
* LINQ (1.0 以降) → これは実装されるとは思えん…
* generators → これもC言語の兼ね合いで難しいと思うけど、どう実装されるか楽しみ
* sealed classes → これは主にライブラリ向けの機能だけど、GObject との兼ね合いで実装は無理だね
* bounds checking for arrays → これも必要な所に assert を仕込めばいいけど、それを自動化してくれれば助かる
実装して欲しい機能
* operator overloading → 有用なのは行列演算だけなんだけど…
* constraints on generic type parameters → これがないと Generics がかなり不便な気がするんだけど…
0173login:Penguin
2011/04/05(火) 00:35:52.41ID:7KO6Qhrh>>147を0.12.0の新機能で実装すると以下のようにシンプルに書ける。
void main()
{
const string name = "焼肉定食";
int index = 0;
unichar c;
while (name.get_next_char(ref index, out c)) {
stdout.printf("%s\n", c.to_string());
}
}
0174login:Penguin
2011/06/05(日) 17:00:28.73ID:kbYNy4xNMonoもQtも先行き不安な状態だけど、ValaとGTK+はマイペースに進化してるかな。
0175login:Penguin
2011/06/05(日) 19:45:44.98ID:z8MV5qJgkwsk
Monoはモバイルの方に向かってるんだっけ?
0176login:Penguin
2011/06/05(日) 22:26:15.15ID:z8MV5qJgってのはかなり魅力あると思うんだが、普及するのはまだまだ先なのかなぁ…
0177login:Penguin
2011/06/06(月) 01:05:26.08ID:rgr9QUMR金を出してくれてた会社から独立したからだけど。
確かにiPhoneとかの方に向かってるけど、iPhoneでMonoを使うメリット
ってあるんだろうか…
>>176
基本的にGLib,GTK+の世界でなきゃ、旨味が少ないんでそれの普及次第だと思う。
GTK+界隈ではそこそこ普及してると思うよ。
dconfエディタとか割と重要なソフトも使うようになったし。
0178login:Penguin
2011/06/06(月) 01:48:22.73ID:fOI8aekFそうだった、あまりの便利さに視野が狭くなってた
ところでValaのクラス変数(static)はJavaのそれと違って少しつまずいた
例えば下のコード
class Hoge {
static Hoge foo = new Hoge();
static void check_foo {
assert( foo != null );
}
public Hoge(){}
}
Hoge.check_foo() を呼び出しても Hoge.foo は初期化されていないから
Hoge.init() を用意して対処するようにしたんだけど、これでいいのかな
0179login:Penguin
2011/06/06(月) 02:02:47.47ID:4QezmLvVstatic Hoge foo = new Hoge();
public static void check_foo() {
assert( foo != null );
print("foo = %p\n", foo);
}
public Hoge(){}
}
void main()
{
var hoge = new Hoge();
hoge.check_foo();
}
これで、問題無く動いたよ => foo = 0x9c2e000
0180login:Penguin
2011/06/06(月) 02:08:09.55ID:4QezmLvVclass Hoge : Object {
ってしないと、hoge.cにGObjectの代わりに自前のオブジェクト作成
コードを書き出すから、行数が多くなる。
: Object なし→259行 あり→114行
0181login:Penguin
2011/06/06(月) 02:28:04.77ID:fOI8aekFX) new Hoge().check_foo()
O) Hoge.check_foo()
普段は理解もせずObjectを継承するようにはしてたんだけど
そういった違いがあったのか
0182login:Penguin
2011/06/06(月) 23:59:22.68ID:4QezmLvVclass Hoge : Object {
static Hoge foo;
public static void check_foo() {
if (foo == null) {
foo = new Hoge();
}
print("foo = %p\n", foo);
}
public Hoge(){}
}
で、いいんじゃない?
■ このスレッドは過去ログ倉庫に格納されています