D言語 Part13
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2007/04/25(水) 20:18:44過去スレは >>2
■本家
ttp://www.digitalmars.com/d/
ttp://www.kmonos.net/alang/d/ (和訳)
■コンパイラ
ttp://www.digitalmars.com/d/dcompiler.html (DMD, 本家)
ttp://dgcc.sourceforge.net/ (GDC, gccフロントエンド)
ttp://gdcmac.sourceforge.net/ (GDCのmac用バイナリ)
■参考URL
ttp://f17.aaa.livedoor.jp/~labamba/ (D言語研究)
ttp://dsource.org/ (dsource)
ttp://www.sun-inet.or.jp/~yaneurao/dlang/
ttp://wisdom.sakura.ne.jp/programming/d/
0002デフォルトの名無しさん
2007/04/25(水) 20:19:17Part12 http://pc11.2ch.net/test/read.cgi/tech/1171037394/
Part11 http://pc10.2ch.net/test/read.cgi/tech/1165621441/
Part10 http://pc8.2ch.net/test/read.cgi/tech/1158013550/
Part 9 http://pc8.2ch.net/test/read.cgi/tech/1146656260/
Part 8 http://pc8.2ch.net/test/read.cgi/tech/1137068104/
Part 7 http://pc8.2ch.net/test/read.cgi/tech/1122912733/
Part 6 http://pc8.2ch.net/test/read.cgi/tech/1109933426/
Part 5 http://pc5.2ch.net/test/read.cgi/tech/1102785854/
Part 4 http://pc5.2ch.net/test/read.cgi/tech/1091185216/
Part 3 http://pc5.2ch.net/test/read.cgi/tech/1079068715/
Part 2 http://f3.aaacafe.ne.jp/~null/cache/1079280501.html
Part 1 http://pc5.2ch.net/tech/kako/1003/10036/1003674814.html
0003デフォルトの名無しさん
2007/04/25(水) 20:29:49', ___,,.へ./:::::::/\:::::::::::::__::::::::::::::::::::_;;:-‐''" |_____ /
', 「 `` ヽ、_ハ-'ァ´ ハ⌒ヽ-''" _,,. / /
rソ \__ >''`'ー---─'--< _;:イ___ / _,、∧/
\ く >'"::;:- '"´ ̄`ヽ、::::-─- '"´ ̄ `ヽ、:::::::::`"'< 「
ノ>'"_:;ア´ ヽ、::::::::::::<
_,,.:::''":::::ア´ / , '´ / i ', i Y:::::::::::::_;> 嫌 何
..,,_ く;::::::::::::::/ / / i. 、,' ハ ,ハ ,i ハ_ iヽ;__;;;:::::> い が
`ヽ、::::ノ ,' .i ハ i\/ ', / i / i ,.イ´./i ! i / .か
_____ ,,.イ i i ./ ァ'" ̄`ヽー/ | /,ァ''" ̄`ヽハ ハ ∠_ よ
∧ '" /| ノ ,ハイ i'´'`i レ' i'´'`i. ト| / i ヽ7 り
\∧/ Vi/ |_,. -‐ァi/ !__,リ !__,リ ' レ'_ン i /へ
/ | `'' ー- -‐ ''´ i ハ' ハ i\/V\/
自 何 ∠,ハ "" ` ""〈 ,.イ ./ ! ', ---─
分 が /从 /´ ̄`' ー--‐ '"´ ̄`ヽ ハ ノ /‐ 、' ヽ.
を. 好 /_ ,.へ. i `'' ー- ー─-‐‐ ''" i ,.イ人iハr' ヽ、. ヽ. ', - ..,,__
語 き /| .ノヽ、r'´ ``ン'7 i ノ ヽ. ヘ/
れ か く |/ i::::::`i>.、.,,_______,,.. イ:::::::iヽへi Y \
よ で > ,イ::::::::::|ヽ、.,____l_」___,.イi::::::::>-く | ', \
!!! < |/:::::::::::|_____ |o| __rへi_ン-‐ァ _r'-イ> ',
0004デフォルトの名無しさん
2007/04/25(水) 20:32:31D言語なら俺に聞け
http://pc11.2ch.net/test/read.cgi/tech/1108172110/
D言語を広めるスレ
http://pc11.2ch.net/test/read.cgi/tech/1175432606/
D言語は多分コケると思っている人の数→
http://pc11.2ch.net/test/read.cgi/tech/1136288019/
【次世代言語】D言語でOSを作ろう【Monaの移植?】
http://pc11.2ch.net/test/read.cgi/tech/1128794438/
バイナリをゲロる言語の魅力って何?
http://pc11.2ch.net/test/read.cgi/tech/1160869311/
その他リンク
【Java/C/PHP/Perl/Ruby/Python/TeX】Eclipse M22
http://pc11.2ch.net/test/read.cgi/tech/1168166588/
eclipseってそんなに良いか?【エクリプス】
http://pc11.2ch.net/test/read.cgi/tech/1099300344/
統合開発環境Eclipseプラグイン開発QA
http://pc11.2ch.net/test/read.cgi/tech/1081517094/
"Code of the Nerds" Digital Mars C/C++
http://pc11.2ch.net/test/read.cgi/tech/1044210976/
0005デフォルトの名無しさん
2007/04/25(水) 20:45:05ttp://www.digitalmars.com/download/freecompiler.html
ttp://ddbg.mainia.de/
ttp://video.google.com/videoplay?docid=-7073020265668105471
ttp://d.puremagic.com/issues/
ttp://www.kmonos.net/alang/d/overview.html
ttp://www.kmonos.net/alang/d/struct.html
ttp://www.kmonos.net/alang/wnd/topics/winapi.ja.html
ttp://www.kmonos.net/alang/wnd/topics/flectioned.ja.html
ttp://www.kmonos.net/alang/wnd/topics/pitfall.ja.html#mojibake
ttp://www.kmonos.net/alang/wnd/devenv.ja.html#ide
ttp://shinh.skr.jp/d/bogoyaml.html
ttp://www.prowiki.org/wiki4d/wiki.cgi?AllLibraries/XmlLibraries
ttp://www.dsource.org/projects/mango/browser/branches/v2.1/mango/xml
ttp://www.dsource.org/projects/tango/browser/trunk?rev=1236
ttp://www.dprogramming.com/entice.php
ttp://www.dsource.org/projects/tango/wiki/ChapterThreading
ttp://d.hatena.ne.jp/shinichiro_h/searchdiary?word=%2a%5bD%5d
ttp://ja.wikipedia.org/wiki/Z%E8%A8%80%E8%AA%9E
ttp://www.wikiroom.com/sakurai/index.php?FrontPage
ttp://forums.codeblocks.org/index.php?board=20.0
ttp://www.google.co.jp/search?q=D%E8%A8%80%E8%AA%9E
ttp://www.javaroad.jp/java_exception3.htm
0006デフォルトの名無しさん
2007/04/25(水) 20:47:310007デフォルトの名無しさん
2007/04/25(水) 21:59:23(i_i)
しJ
0008デフォルトの名無しさん
2007/04/25(水) 22:09:26. * .
* + 。 。 +
__ _ /ヾ_/ヽ 旦
f ミv'´{ごづヾ彡 , '´⌒'v'ヾ '´ ̄`ヽ * 。
゙i´!(((从 从リ ! ifi」liリ゙l i!卯、 (((/从从 i
!○(l ^ヮ゚ノ!| i * |i、゚ヮ^ |!)○゙ 。 从゚- ゚ ||○ *
ノノ ヽ)本iO ヾ Oi本(~/ヽ OL介_(ノ . +
ガタン||| ((´ く/_i_iヾ )) ||| /i_i_ヾ> ) )) ||| + /_|_|ヾ> |||ガタン +
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ロ リ 絶 賛 ! >>1 の ス レ 立 て に 超 感 動 !
0009デフォルトの名無しさん
2007/04/25(水) 22:28:51/ : : : : : : : : ‐- : :、: : : : :ヽ: : : : \
{  ̄: : : : : : : : : : : : : : :ヽ、: : : ヘ: : : : : ヽ
,.ヘ: : : : : : : `丶 : : : : : : : : `く/ ヘ: : : : : :',
/: : ヽ: : \: : : : : \: : -―: : : :`く: : '.,: : : : :l
,': {: : : \: : :ヽ、: : : : :\ー‐、: : : :ヽ:\: ヽ : : :|
l: :l : : : l \: : : \‐=V弋芝圷\: \l\l : : :|
|: :l: :: : {xく´_\`ヽ:ヽ Vヘソ |: : |: : }: :./i
l: :l:ヽ : ヽ仗圦 \ ゞ''´ ノ: /l: :ハ/ 、ノN
ヽヘ: :\ ヽVヘ:} // j/-j/ 乂 ノ: :j >>1乙
丶\: ヽ: ゞ'' 、 ハ! : : :ヽj、_,ヘヘi彡'
`ヘ> - ' / V廴V-へ∠`´__
ヽ、_ / ヽ/ ̄/ '⌒ヽ `丶
\ミ、ー:- -イ / / / ヽ \
ヽ:八{\少} / / / ∨ \
'′_>' /’ __,/ / / | \
,イ /、 ´/ /´ | \
/l│ / __/ / / | /
/│| /V / / / | _/
││{ / /V / r'´ ノ¨ ̄´
| ヘ ∨ ∨ ̄ ̄/ } /
0010デフォルトの名無しさん
2007/04/26(木) 10:48:210011デフォルトの名無しさん
2007/04/26(木) 12:44:060012デフォルトの名無しさん
2007/04/27(金) 04:39:05/.::::/..::::::,ィ ´.:::::::::::::::::::::::.....`ヾ、
, ′::/.:::::::::〃.::::::::::::::::::::::::::::::::::::::.....ヽ
/.::::::/.:::::::::::://:::,、::::::::,:::::,、::,::::i:::::::::::::::::::. ',
/.::::::/.:::::::::::://ィグ::/,ィ:::://イ::::,!:::::::::iヘ::::::: l
/.::::::/.:,:::::::::::/^ー-、‐'゙ノ::ノ / ノ:::,ィ,1:::::::lv!:lヘ:: |
. /.::::::::i::::{:::::::::::| ,ッィテrミ-、´ノノ:::ノノ ,!:::ノ!:::::!:レ゙::;!
/.::::::::::{::::|::::::::::::! ゞノ ヾ`'  ̄,=≧-' ,リ::::ノ::}:〈
/.::::::::::/:`::|::::::::::::i、 ` ̄ ´ヒ_ツ F ブ;:'::;:ハ::}
/.::::::::::,':::::::::l:::::::゙、::iヾ、 、`ー'' /::ノ ノ' ソ
//.::::::::::i:::::::::::',::::::: t、ヽ、 ┘ /:「
. //.::::::::::,:::::|::::::::::: '、:::: l\` (⌒7 .イ:::| 過疎ってないでもりがろうや
/::/.:::::::::::::::::!:::::|::::::::::::::::ヽト! ヽ、 `ニ′_, ィ´:ハ::|
/.:::/.::::::__::::::::|:::::l;::::::::::::::: H、 /`ー T´.:/!::/ ソ
.::::::/ / . : : : : ̄| l 八::::::::::::: リ、`ーォ..::::: /:/ j/
::::/ / . : : : : : : j / ヾ、::::::: | `7|:::::::: /´
::..:/. : : : : : : レ′ ヽ::::::: l、′い::: ト 、
ノ . : : : : : : : ゙、:::::::} : :`'|:: |: : ヽ
-、: : : : : : : : : : : ',::::ハ : : l::,! : : ,!
:::::.ヽ、: : : : ;、-: : : : V : : :.jノ: : /
`ヾ::::::ヽ/: : : : : : : : : : : : : :「�h
0013デフォルトの名無しさん
2007/04/27(金) 04:49:280014デフォルトの名無しさん
2007/04/27(金) 10:43:550015デフォルトの名無しさん
2007/04/27(金) 11:02:400016デフォルトの名無しさん
2007/04/27(金) 14:52:14すごく遅くなるんですけど、何か簡単に効率化できる方法ないですかね?
0017デフォルトの名無しさん
2007/04/27(金) 16:23:44ついに動的配列リテラル/構造体リテラルktkr
0018デフォルトの名無しさん
2007/04/27(金) 16:33:12おまえの実装が悪いだけだと思うが
なるべくnewを使わずに、確保できるものは最初から確保しておく
0019デフォルトの名無しさん
2007/04/27(金) 16:33:58一時的にgcを止めればいいとおも
0020デフォルトの名無しさん
2007/04/27(金) 16:48:48いやいや、巨大なファイルを読み込んでその一部を解析するプログラムで、
性能に響く部分は自分のクラスのnewは使ってないですよ。
間接的に
Stream file = new BufferedFile( filename );
foreach ( char[] line; file )
で呼んでるんで、これやめないといけないですかね?
>>19
ファイルが巨大なのでそれやるとメモリ不足になります。
一定期間ためてやっても性能上がりませんでした。
0021デフォルトの名無しさん
2007/04/27(金) 17:58:51乙
What's New for D 1.014
Apr 20, 2007
New/Changed Features
* Added associative array literals
* Added struct literals
* Array element assignments can now be done in CTFE
Bugs Fixed
* Bugzilla 1000: writefln fails on nested arrays
* Bugzilla 1143: Assertion failure: '0' on line 850 in 'template.c' - On specialization of IFTI template parameters.
* Bugzilla 1144: template mixin causes DMD crash
* Bugzilla 1146: mixin + assert() crashes compiler
* Bugzilla 1153: dmd assertion failure
* Bugzilla 1159: Various mixins cause "CompileExp::semantic" message, some crash DMD
* Bugzilla 1174: Program hangs creating an array of enums with nonzero initializer
* Bugzilla 1177: no longer works inside CTFE functions.
* Bugzilla 1180: the GC failes to handle large allocation requests propperly
* Bugzilla 1189: Reverse the titles on web pages
0022デフォルトの名無しさん
2007/04/27(金) 18:01:120023デフォルトの名無しさん
2007/04/27(金) 18:15:190024デフォルトの名無しさん
2007/04/27(金) 18:17:22http://www.digitalmars.com/d/struct.html#StructLiteral
0025デフォルトの名無しさん
2007/04/27(金) 18:22:11ああ、そこにあったのか。ありがと。
しかしこの書き方はなんか気持ち悪いな。
名前で指定できればよかったのに。
0026デフォルトの名無しさん
2007/04/27(金) 18:23:200027デフォルトの名無しさん
2007/04/27(金) 18:24:230028デフォルトの名無しさん
2007/04/27(金) 18:44:06S(x: 1, y: 2) みたいな感じ?
0029デフォルトの名無しさん
2007/04/27(金) 18:54:04static な opCall と構造体リテラル、優先して呼ばれるのは opCall っぽいしな。
どっちを使うか明確にできて、さらにメンバの名前で指定できたらうれしいね。
0030デフォルトの名無しさん
2007/04/27(金) 18:57:33個人的には名前で指定するのは別の言語っぽくてあんま気分よくない。
というか、それなら普通の関数呼び出しも名前で指定できるべきじゃね?
0031デフォルトの名無しさん
2007/04/27(金) 18:57:58そうそう。Cの複合リテラルみたいに。
Size(10, 20) のどっちが幅か確かめるのにいちいちリファレンスなりソースなりを
確認しなきゃならんのはどう考えても非効率。ミスも出るだろうし
0032デフォルトの名無しさん
2007/04/27(金) 19:02:27途中から、何か処理入れた方がいいからと opCall を実装する・・・
ということはありそうな話ではあるけど、
まあ、そういうのは構造体には向いてないか。
というか、この構造体コンストラクタみたいなものを
static opCall で実装してる部分に関しては
そろそろどうにかならんのだろうか。
もう、普通にコンストラクタ作れても良いと思う。
あるいは、ほとんどの状況下では
static opCall を使わなくてもいいような文法にするか。
初期値を指定できるようにして、
構造体リテラルで名前指定するようにすれば、
static opCall が必要になる状況は少ないと思う。
0033デフォルトの名無しさん
2007/04/27(金) 19:04:47あれは結構便利だと思うなあ。
Foo(/* hoge */ 0, /* fuga */ false);
Foo(hoge := 0, fuga := false);
0034デフォルトの名無しさん
2007/04/27(金) 19:05:11struct S {
int a;
int b;
int c = 4;
int d = 8;
}
で、
S(a: 1, b: 2) // OK
S(a: 1, b: 2, c: 3, d: 4) // OK
S(d: 4, c: 3, b: 2, a: 1) // OK
S(a: 1) // Error
みたいな感じ。
0035デフォルトの名無しさん
2007/04/27(金) 19:05:38>普通の関数呼び出しも名前で指定できるべき
オーバーロードが複雑になりそう。
#ってかvbの名前付き引数思い出す。
0036デフォルトの名無しさん
2007/04/27(金) 19:08:194つめはいささか互換性を崩しすぎではなかろうか
0037デフォルトの名無しさん
2007/04/27(金) 19:09:28ん、どういう事?
0038デフォルトの名無しさん
2007/04/27(金) 19:12:04S(1) が通るのに S(a: 1) がエラーになるのは気持ち悪いな、と思っただけ。
0039デフォルトの名無しさん
2007/04/27(金) 19:16:03b を初期化すれば通る。
でも、そういや
>static X x = { a:1, b:2}; // c is set to 0, d to 7
では、値を指定してないところは 0 で初期化されるのね。
なら、b に 0 を入れる風にしてコンパイル通るようにした方がいいか。
0040デフォルトの名無しさん
2007/04/27(金) 19:16:500041デフォルトの名無しさん
2007/04/27(金) 19:30:390042デフォルトの名無しさん
2007/04/27(金) 19:59:14S { a: 1, b: 2 } とかいう文法もアリかもしれんな。
なぜ { } じゃなく ( ) にして、しかも : を排したのか、だが、
とりあえず実装しやすかったからなんだろうか?
0043デフォルトの名無しさん
2007/04/27(金) 20:12:02無名デリゲートリテラルと紛らわしくなる、ってことはないか。
0044デフォルトの名無しさん
2007/04/27(金) 20:19:34よー分からんけど。
0045デフォルトの名無しさん
2007/04/27(金) 20:29:190046デフォルトの名無しさん
2007/04/27(金) 21:34:37感動した。。。
0047デフォルトの名無しさん
2007/04/27(金) 21:48:200048デフォルトの名無しさん
2007/04/27(金) 21:51:31const b = ((["hoge"[]: ["foo"[]: 1, "bar": 2], "fuga": ["foo"[]: 3, "bar": 4]])["fuga"])["foo"];
しかし、これといって面白い使い方も思いつかんな
0049デフォルトの名無しさん
2007/04/27(金) 21:58:07ができないとあまり意味無い気ガス。
それと何故か以下のが通る。
auto test = (["a"[]:true,"b":false]);
const a = test.init["a"];
static assert(a==true);
0050デフォルトの名無しさん
2007/04/27(金) 21:59:10将来的なこと考えると、失敗じゃないのかね・・・?
それとも、静的配列以外のイニシャライザは未来永劫に実装されないということだろうか。
0051デフォルトの名無しさん
2007/04/27(金) 22:07:42配列リテラルと配列初期化子が分かれてるところも問題だしなぁ。
連想配列リテラルは"test"dのように[1:"a",2:"b",3:"c"]aとするべきだと思う。
0052デフォルトの名無しさん
2007/04/27(金) 22:09:330053デフォルトの名無しさん
2007/04/27(金) 22:11:02静的配列のイニシャライザでは同じであるにも関わらず、
その他のコンテクストでは違う意味を持っているところに問題があるのではないか?
0054デフォルトの名無しさん
2007/04/27(金) 22:12:38あ、そっかw
0055デフォルトの名無しさん
2007/04/27(金) 22:13:26ん?
int[3] = [0:"a", 1:"b", 2:"c"];
とか通るの?
うち Mac だからまだよー分からんのだが。
0056デフォルトの名無しさん
2007/04/27(金) 22:13:590057デフォルトの名無しさん
2007/04/27(金) 22:17:16static char[][3] a = [0:"a", 1:"b", 2:"c"];
intではなくchar[]だと思うが、staticな配列は添え字付で初期化できるよ。
0058デフォルトの名無しさん
2007/04/27(金) 22:51:18っつーか早く仕様堅めんとマジでPerl6の二の舞になるぞ
ヲルターたんの近くに誰か仕事の邪魔するスパイがいるの鴨試練
0059デフォルトの名無しさん
2007/04/27(金) 22:57:04あ、型も間違えてた。
適当に書きすぎたな。
そうか・・・。添字付きで初期化できたんだ。
そりゃマズいな。
0060デフォルトの名無しさん
2007/04/27(金) 22:59:360061デフォルトの名無しさん
2007/04/27(金) 23:02:250062デフォルトの名無しさん
2007/04/27(金) 23:17:470063デフォルトの名無しさん
2007/04/27(金) 23:35:07ネストしてない無名構造体って書けたっけ?
0064デフォルトの名無しさん
2007/04/28(土) 00:40:230065デフォルトの名無しさん
2007/04/28(土) 00:40:38newできないからクラスの中に突っ込むみたいな使い方できないし
使い勝手がいまいち
まあ、ハッシュテーブルクラス自作しちゃったから別にいいけど
0066デフォルトの名無しさん
2007/04/28(土) 00:48:43int[char[]] s = (["foo":1, "bar":2]);
writefln(s["foo"]);
writefln(s["bar"]);
writefln("length=", s.length);
s = null;
s["boo"] = 3;
writefln(s["boo"]);
writefln("length=", s.length);
0067デフォルトの名無しさん
2007/04/28(土) 01:02:16中身のリセットならaa=null;とかaa.remove(key)とかで事足りる気がする。
あと、クラスの中に入れたきゃ、
普通にメンバ変数にしときゃ問題ない気もする。
使い勝手がいまいちなのは、
外部イテレータが欲しいとか、
キーが存在しない程度のことでいちいち例外投げるなとか、
いろいろあるからまぁ同意。
0068デフォルトの名無しさん
2007/04/28(土) 11:42:48C#のNullableみたいなものがあれば使いやすくなるのかな。
C#使ったこと無いんでよく知らんけど。
0069デフォルトの名無しさん
2007/04/28(土) 14:03:34せめて assoc.has(key) てメソッドくらい持っててホスィ……
Value* valuePtr = (key in assoc);
Value value = (valuePtr != null) ? *valuePtr : null;
とか怪しすぎる。
そういえば、D言語には「コンパイラ組み込みクラス」
という概念は無いんだろうか?
0070デフォルトの名無しさん
2007/04/28(土) 14:12:520071デフォルトの名無しさん
2007/04/28(土) 14:17:45if( key in assoc )じゃだめか?
0072デフォルトの名無しさん
2007/04/28(土) 14:20:18こうじゃね?
if(auto ptr = key in assoc)
writefln(*ptr);
0073デフォルトの名無しさん
2007/04/28(土) 14:21:57TValue get(TKey, TValue)(TValue[TKey] aa, TKey key) {
auto p = key in aa
return (p != null) ? *p : TValue.init;
}
とかつくっときゃいいんじゃね?
0074デフォルトの名無しさん
2007/04/28(土) 18:22:20generics(519); // ここは定数でコーディング
}
void generics(int n) {
dout.writefln(n);
generics_!(n);
}
void generics_(int n)() {
dout.writefln(n);
}
>519
>1
いろいろ遊んでて途中でこういうコードがコンパイルできてたんだけど
出力もおかしいんですし、コンパイラ側のバグとかですか?
0075デフォルトの名無しさん
2007/04/28(土) 18:29:27genericsの引数のnは定数じゃないんだから
テンプレートのint引数に使えちゃまずい、
ってことか。
007669
2007/04/28(土) 21:50:41if文でnullテストとかの発想自体頭から消えてたヨー。
……でもif文にbool以外渡したくねぇなあ、とか思う俺は
もうJavaから帰ることはできないのかもしれない。
0077デフォルトの名無しさん
2007/04/28(土) 23:33:53> 式をboolへとキャストするのは、数値型に対しては0のの比較 !=0 と同じ意味で、
> ポインタや参照型に対しては、null との比較 !=null と同じ意味です。
というように、小手先の省略記法ではなくて
言語の意味に含まれているやり方だという点で
精神衛生的にはいい感じ。
まあ個人によりけりだろうけどね。
0078デフォルトの名無しさん
2007/04/29(日) 01:25:050079デフォルトの名無しさん
2007/04/30(月) 02:48:400080デフォルトの名無しさん
2007/04/30(月) 11:42:25使いにくいですけどね。
008180
2007/05/01(火) 12:02:370082デフォルトの名無しさん
2007/05/01(火) 17:12:38Dの大規模アプリなんてこの世にあるのか?
0085デフォルトの名無しさん
2007/05/01(火) 23:04:280086デフォルトの名無しさん
2007/05/01(火) 23:08:180087デフォルトの名無しさん
2007/05/02(水) 00:59:56return;
_a = a;
if(b == typeof(b).init)
return;
_b = b;
こんな感じの式の繰り返しを
check_and_assign("a");
check_and_assign("b");
check_and_assign("c");
テンプレート使ってこんな感じで書くことってできますか?
0088デフォルトの名無しさん
2007/05/02(水) 02:43:00呼び出し元関数からみえる識別子を使ったり、
ってことだよね。
まさに宣言した位置に文を読み込みたい、という。
テンプレートには宣言しか書けないから無理じゃないかなあ。
テンプレート関数にaliasとして変数名を渡して、その戻り値をみて
returnするかどうか分岐して、…というようにまどろっこしいこと
しないと無理だと思う。
あるいは、
mixin(check_and_assign!("a"));
という構文で87の言うようなものを実現することは、一応不可能じゃないと思う。
import std.metastrings;
template check_and_assign(char[] id){
const char[] check_and_assign = Format!(import("base_d_code.dtxt"),id);
}
とかいう感じになるのかなあ。
大変だと思うけど。
0089デフォルトの名無しさん
2007/05/02(水) 09:44:39char[]check_and_assign(char[]a){
return `if(`~a~` == typeof(`~a~`).init)return;_`~a~`=`~a~`;`;
}
mixin(check_and_assign("a"));
0090デフォルトの名無しさん
2007/05/02(水) 10:37:33回答ありがとうございます。
やってみたのですが、
cannot evaluate check_and_assign("a") at compile time
argument to mixin must be a string, not (check_and_assign("a"))
このようなエラーがでてしまいます。
GDCを使わなければならない関係で、
DMDのバージョンが1.007と古くなっているのがいけないのでしょうか。
コンパイル時の関数実行ってもっと新しいバージョンのDMDでないと対応していなかった気がします。
009190
2007/05/02(水) 10:45:21mixin文はDMD1.005から対応していますから、1.007なら当然動くはずですよね。
check_and_assignを関数内で宣言していたのでコンパイル時に評価できなかったようです。
staicにしたらうまくできました。
どうもありがとうございました。
0092デフォルトの名無しさん
2007/05/02(水) 10:46:230093デフォルトの名無しさん
2007/05/02(水) 16:17:27すごいなあ。
0094デフォルトの名無しさん
2007/05/02(水) 18:10:09そんなことできるのか
0095デフォルトの名無しさん
2007/05/02(水) 20:05:04コンパイル時関数実行に書き換えたら、コンパイル速度一気に上がった。
メモリ消費も少ないし、変態コーディングしなくてもよくなったし、こりゃ便利。
0096デフォルトの名無しさん
2007/05/03(木) 08:03:290097デフォルトの名無しさん
2007/05/03(木) 08:12:160098デフォルトの名無しさん
2007/05/03(木) 17:21:28コンパイル通らないのはこんなものなのか?
class ITestImpl(T) {
char[] name_ = "super class";
void print() { printf(cast(char*)this.name_); }
}
interface ITest {
void print();
}
class TestClass : ITestImpl!(TestClass), ITest {
char[] name_;
this(char[] name) { name_ = name.dup; }
}
void test() {
ITest t = new TestClass("test class");
t.print();
}
0099デフォルトの名無しさん
2007/05/03(木) 17:40:18class TestClass じゃなくて、class ITestImpl の方に ITest を派生させればいいんじゃない?
0100デフォルトの名無しさん
2007/05/03(木) 18:36:00コンパイルエラーと関係ないけどTestClassのchar[] name_;はいらね。
0101デフォルトの名無しさん
2007/05/03(木) 18:47:41こうすれば楽にできるとはいえ、
個人的には>>98のやりかたでコンパイルが通ってほしいとは思う。
class ITestImpl(T,Bases...) : Bases{
char[] name_ = "super class";
void print() { printf("%.*s",name_); }
}
interface ITest {void print(); }
class TestClass : ITestImpl!(TestClass,ITest) {
this(char[] name) { name_ = name.dup; }
}
void test() {
ITest t = new TestClass("test class");
t.print();
}
~
0102デフォルトの名無しさん
2007/05/03(木) 19:11:20そのクラスで実装しろ、ということだから、再実装に限らず
実装するときはそのクラスで、ということなんじゃないかと思った。
けど、そうすると、
class TestClass : ITestImpl!(TestClass), ITest {
alias ITestImpl!(TestClass).print print;
this(char[] name) { name_ = name.dup; }
}
とか、aliasのかわりに import hogemodule: print = hogeprint
とかで通らないのは微妙な気がする。
あと http://www.kmonos.net/alang/d/interface.html の
> インターフェイスは、そのインターフェイスを継承する関数が
は関数じゃなくてクラスなんじゃないかと思った。
0103デフォルトの名無しさん
2007/05/03(木) 20:03:180104デフォルトの名無しさん
2007/05/03(木) 20:06:18ん? インターフェイスに限らず、クラスの中にalias書いただけでは実装できんでしょ。
0105デフォルトの名無しさん
2007/05/04(金) 00:40:24何考えてあんな阿呆みたいな事(学生の思いつきレベル?)やってるんでしょうか。
0106デフォルトの名無しさん
2007/05/04(金) 01:01:06どの辺が? と釣られてみる。
0107デフォルトの名無しさん
2007/05/04(金) 01:01:120108デフォルトの名無しさん
2007/05/04(金) 01:19:47まずboostのソースを見て耐性を付けることをお勧めします。
0109デフォルトの名無しさん
2007/05/04(金) 01:42:24乙
0110デフォルトの名無しさん
2007/05/04(金) 11:52:58柔軟性は実現出来てないかも。
0111デフォルトの名無しさん
2007/05/04(金) 13:34:080112デフォルトの名無しさん
2007/05/04(金) 15:32:44import sub1, sub2;
void main() {
test("abcd\0"w.ptr);
printf("%d\n", lstrlenW("abcd\0"w.ptr));
}
---sub1.d----------
extern(Windows) int lstrlenW(wchar*);
---sub2.d----------
private extern(Windows) int lstrlenW(wchar*);
void test(wchar* p) { printf("%d\n", lstrlenW(p)); }
-------------------
なんでlstrlenWがコンフリクトするんでしょうか?
main.d(4): Error: sub1.lstrlenW at sub1.d(1) conflicts with sub2.lstrlenW at sub2.d(1)
試しに、main.dのimportからsub1はずしたら、
main.d: module main sub2.lstrlenW is private
main.d(4): Error: function sub2.lstrlenW is not accessible from main
と、sub2のprivate属性効いている様なんですけど。
0113デフォルトの名無しさん
2007/05/04(金) 16:32:34private でも認識はしてるわけで、
だからコンフリクトするんだろう。
0114デフォルトの名無しさん
2007/05/04(金) 17:38:21基底クラスから継承しない、ってのは、派生クラスでの実装の意思を
確認し(て、実装し忘れバグを防ぎ)たいというだけのことだと思うから、
シンボルを明示的にインポートしてる場合は実装したことにしておいても
よさそう、
というような意味。そのクラスでの実装がされるわけじゃないね、たしかに。
>>112
private importの話とは違って、private属性のモジュールメンバは
外部から参照不可になるだけであって名前が隠されるわけじゃ
ないんだろうね。
0115デフォルトの名無しさん
2007/05/04(金) 17:46:43> モジュールのメンバを private と宣言するのは、 C での static 宣言と同等です。
とあったので、Cと同じく名前も見えないものだと誤解してました。
そうすると、見えなくするには、別モジュールへ分離してprivate importするしか方法ないですかね?
0116デフォルトの名無しさん
2007/05/04(金) 18:19:120117デフォルトの名無しさん
2007/05/04(金) 19:08:04使うという手もある。場合によるけど。
0118デフォルトの名無しさん
2007/05/04(金) 19:19:340119デフォルトの名無しさん
2007/05/05(土) 09:13:51それはNemerleだ。
これ以上はいうまい。
0120デフォルトの名無しさん
2007/05/05(土) 09:24:260121デフォルトの名無しさん
2007/05/05(土) 23:34:56やるねっOTL
0122デフォルトの名無しさん
2007/05/05(土) 23:47:260123デフォルトの名無しさん
2007/05/06(日) 00:09:120124デフォルトの名無しさん
2007/05/06(日) 02:03:39Nemerleは昔さわってたな
開発スピードが鈍化したせいでなんとなく放置状態になってた
なんか動きでもあったの?
0125デフォルトの名無しさん
2007/05/06(日) 21:31:530126デフォルトの名無しさん
2007/05/06(日) 21:33:020127デフォルトの名無しさん
2007/05/06(日) 21:38:270128デフォルトの名無しさん
2007/05/07(月) 10:37:17ブッ
「あー、クソっ!」
ブッー、ブブッ
「うぇぁー、チキショウ!」
0129デフォルトの名無しさん
2007/05/07(月) 11:04:130130デフォルトの名無しさん
2007/05/07(月) 13:35:350131デフォルトの名無しさん
2007/05/07(月) 14:03:551年後には多分使えなくなる。
0132デフォルトの名無しさん
2007/05/07(月) 14:57:270133デフォルトの名無しさん
2007/05/07(月) 16:13:25shinichiro_hさんとか、書かないかなぁ...
0134デフォルトの名無しさん
2007/05/07(月) 19:00:15共闘するか?
0135デフォルトの名無しさん
2007/05/07(月) 19:03:310136デフォルトの名無しさん
2007/05/07(月) 19:04:110137デフォルトの名無しさん
2007/05/07(月) 22:35:570138デフォルトの名無しさん
2007/05/07(月) 22:37:420139デフォルトの名無しさん
2007/05/07(月) 23:44:540140デフォルトの名無しさん
2007/05/07(月) 23:49:140141デフォルトの名無しさん
2007/05/07(月) 23:55:38「はじめてのC」どころの騒ぎじゃなくなるな。
0142デフォルトの名無しさん
2007/05/07(月) 23:56:26C++
C#
0143デフォルトの名無しさん
2007/05/08(火) 02:21:35頭文字DってことでおK?
0144デフォルトの名無しさん
2007/05/08(火) 16:09:10はじめてのZ#
0145デフォルトの名無しさん
2007/05/08(火) 18:24:320146デフォルトの名無しさん
2007/05/08(火) 18:26:060147デフォルトの名無しさん
2007/05/08(火) 22:03:040148デフォルトの名無しさん
2007/05/09(水) 10:56:45http://pc11.2ch.net/test/read.cgi/tech/1145017800/68
0149デフォルトの名無しさん
2007/05/09(水) 18:49:530150デフォルトの名無しさん
2007/05/09(水) 22:28:590151デフォルトの名無しさん
2007/05/09(水) 22:35:340152デフォルトの名無しさん
2007/05/09(水) 22:36:220153デフォルトの名無しさん
2007/05/09(水) 22:41:08VBですら読みにくくてしょうがないのに
0154デフォルトの名無しさん
2007/05/11(金) 06:05:440155デフォルトの名無しさん
2007/05/11(金) 16:51:240156デフォルトの名無しさん
2007/05/12(土) 02:09:44この過疎ぶりをみると...
0157デフォルトの名無しさん
2007/05/12(土) 02:27:250158デフォルトの名無しさん
2007/05/12(土) 02:27:590159デフォルトの名無しさん
2007/05/12(土) 02:32:020160デフォルトの名無しさん
2007/05/12(土) 03:35:23Erlangとか、Erlangとか、Erlangとか。
0161デフォルトの名無しさん
2007/05/12(土) 03:40:270162デフォルトの名無しさん
2007/05/12(土) 19:53:570163デフォルトの名無しさん
2007/05/12(土) 21:05:28ついにSunも・・・
0164デフォルトの名無しさん
2007/05/13(日) 00:11:55と思ったけど別物じゃねーかチクショウ
0165デフォルトの名無しさん
2007/05/13(日) 00:13:580166デフォルトの名無しさん
2007/05/13(日) 00:37:290167デフォルトの名無しさん
2007/05/13(日) 00:39:130168デフォルトの名無しさん
2007/05/13(日) 02:15:180169デフォルトの名無しさん
2007/05/13(日) 02:16:470170デフォルトの名無しさん
2007/05/13(日) 04:40:020171デフォルトの名無しさん
2007/05/13(日) 08:25:03これはす・・・ω・`)
0172デフォルトの名無しさん
2007/05/13(日) 16:13:280173デフォルトの名無しさん
2007/05/13(日) 16:21:31PageRankが下がっただけだろう。現在28位。
0174デフォルトの名無しさん
2007/05/14(月) 18:24:13dmdのように .res (リソーススクリプトをコンパイルしたやつ) をリンクしてビルドさせることは可能なんでしょうか?
たとえば >dsss build -gui main.d resource.res みたいに使えないのかなぁと
0175デフォルトの名無しさん
2007/05/16(水) 02:01:04DでVCLを使える。
0176デフォルトの名無しさん
2007/05/16(水) 02:01:520177デフォルトの名無しさん
2007/05/16(水) 02:21:07じゃないと一生普及しないよ。
0178デフォルトの名無しさん
2007/05/16(水) 02:22:390179デフォルトの名無しさん
2007/05/16(水) 02:25:35漏れはIDE好きじゃないけどその意見には同意
あとどっちかっつーと各種Frameworkの充実も待たれる
いまどき何かしようとして全部土台から作るって
Cと変わらんじゃないかと
0180デフォルトの名無しさん
2007/05/16(水) 02:26:020181デフォルトの名無しさん
2007/05/16(水) 02:35:52せめてコンパイラが構文解析とかをxmlとかで吐いてくれたら作りやすくなるんだが。
0182デフォルトの名無しさん
2007/05/16(水) 04:26:47バージョンアップは仕様変更だけじゃなくて、
バグフィックスも含んでるんだから。
0183デフォルトの名無しさん
2007/05/16(水) 04:35:100184デフォルトの名無しさん
2007/05/16(水) 04:37:21バグフィックス版を適用するのに問題はないだろ。
0185デフォルトの名無しさん
2007/05/16(水) 04:40:26以降のバージョンで大きく仕様が変わってたら困るっしょ。
0186デフォルトの名無しさん
2007/05/16(水) 05:42:16それでメリットがあるなら乗り換える
改悪だったら捨てる
0187デフォルトの名無しさん
2007/05/16(水) 07:58:21無いよりはマシ
0188デフォルトの名無しさん
2007/05/16(水) 12:12:020189デフォルトの名無しさん
2007/05/16(水) 12:29:29最新の各ライブラリは-v1に準拠とかしてるんだろうか。
1.007での演算子の優先順位の変更なんか、地味に挙動が変わりそうで不安だ。
0190デフォルトの名無しさん
2007/05/16(水) 16:41:23dmd/src/dmd/ に在る parse.c が構文解析なんじゃないの?
0191デフォルトの名無しさん
2007/05/17(木) 00:02:04やる意味がないか。
0192デフォルトの名無しさん
2007/05/17(木) 00:22:54正式版がリリースされればそれもありじゃないかと。今の時期それをやる意味はなさそうです。
0193デフォルトの名無しさん
2007/05/17(木) 00:30:290194デフォルトの名無しさん
2007/05/17(木) 00:36:120195デフォルトの名無しさん
2007/05/17(木) 00:40:41みたいにできるようにならんかなあ。
0196デフォルトの名無しさん
2007/05/17(木) 00:50:02仕様がダイナミックに変更される今の状態を正式版と呼ぶのは躊躇われる・・・
「仕様が固まったら」の方が正しいですかね。
0197デフォルトの名無しさん
2007/05/17(木) 02:59:52プロジェクト管理だけで十分
0198デフォルトの名無しさん
2007/05/17(木) 03:28:23そんなこと言ってたら廃れた後になるぞw
0199デフォルトの名無しさん
2007/05/17(木) 04:12:41* Added Signals and Slots implementation
* Reworked the Time package
* Updated for DMD 1.014
* More documentation examples
* Exception stack-trace example using Flectioned
0200デフォルトの名無しさん
2007/05/17(木) 11:12:34まぁ今のところは、他ならぬ自分らが言語仕様を信じてなさそうだからねw
彼らの界隈でそういう話が出るまでは、こっちも大がかりなことにはDを使えない。のかも。
0201デフォルトの名無しさん
2007/05/17(木) 13:55:25template mixinでやろうと思ったけど、よくよく考えれば無理だった
0203デフォルトの名無しさん
2007/05/17(木) 19:32:20ttp://en.wikipedia.org/wiki/D_programming_language
だれか翻訳してくれ
0204デフォルトの名無しさん
2007/05/17(木) 19:35:160205デフォルトの名無しさん
2007/05/17(木) 19:39:120206デフォルトの名無しさん
2007/05/17(木) 19:44:070207デフォルトの名無しさん
2007/05/17(木) 19:44:59いや、日本版Wikipediaの項目があんまりにも質素だから...
0208デフォルトの名無しさん
2007/05/17(木) 19:56:02struct A{int v;}
void main(){
A a = A(10);
if (a == a.init) writefln(a.v,"(a==a.init)");
else writefln(a.v,"(a!=a.init)");
a.v = 100;
if (a == a.init) writefln(a.v,"(a==a.init)");
else writefln(a.v,"(a!=a.init)");
a = A(1000);
if (a == a.init) writefln(a.v,"(a==a.init)");
else writefln(a.v,"(a!=a.init)");
}
全部のif文がtrueの方になるんだが・・・
2つ目と3つ目はなんでfalseにならないの?
0209デフォルトの名無しさん
2007/05/17(木) 20:02:320210デフォルトの名無しさん
2007/05/17(木) 20:15:02struct A{int v;}
void main(){
A a = A(10);
a.v = 100;
writefln("a.v = %s", a.v);
writefln(a == a.init);
writefln("a.v = %s", a.v);
}
構造体リテラルで初期化された構造体変数をinitと比較すると値が変わってしまうみたいだな。
0211デフォルトの名無しさん
2007/05/17(木) 20:15:58writefln(a.v);とかa.init;とかを間に挟むとさらに挙動不審になるし。
どんなバグなのかは分からんけど。
0212208
2007/05/17(木) 20:20:34に構造体を変えたら正常に動いた。構造体リテラルのバグのようだ
0213208
2007/05/17(木) 20:31:55えらい人報告お願いしますm(..)m
0214デフォルトの名無しさん
2007/05/17(木) 21:25:150215デフォルトの名無しさん
2007/05/17(木) 21:35:040216デフォルトの名無しさん
2007/05/17(木) 21:41:150217デフォルトの名無しさん
2007/05/18(金) 02:56:29Pantherでテストしてくれる人が居ないとか
0218デフォルトの名無しさん
2007/05/18(金) 03:58:52仕事はやw
後は誰かが、>>208を書けば良いだけだな
0220デフォルトの名無しさん
2007/05/18(金) 13:53:38ttps://svn.sourceforge.net/svnroot/dgcc/trunk/d/ChangeLog
0221デフォルトの名無しさん
2007/05/18(金) 21:16:25const、final、invariantの準備
これはD 2.0のベータに来る予定であり、いくらかのソースコードの変更を必要とします。
その為、配列やポインタな関数の引数に明確に"in"を用い初めてください。
"in"は"scope const final"をあらわすようになります。その意味は:
final - 引数は関数の中で再代入されなくなります。
const - その関数は参照先の内容を変えようとさせなくなります。
scope - その関数は関数の範囲で持続する引数のデータの参照を保たなくなります。
例:
int[] g;
void foo(in int[] a)
{
a = [1,2]; // error, a is final
a[1] = 2; // error, a is const
g = a; // error, a is scope
}
引数でこれらの操作のどれかをしたいのなら、"in"を使用しないでください。"in"を使うことはD 1.0のコードでは特に意味は無いので、それは後方互換になるはずです。
Adding in all those 'in's is tedious, as I'm finding out :-( , but I think the results will be worth the effort.
0222デフォルトの名無しさん
2007/05/18(金) 21:36:55SelfTypeが言語的にサポートされるといいなあ……
0223デフォルトの名無しさん
2007/05/18(金) 22:01:03うわーん引数に代入するなー誰が保守すると思ってるんだー。
ところで>>221の原文はどこでっしゃろ?
0224デフォルトの名無しさん
2007/05/18(金) 22:04:06news://news.digitalmars.com/[email protected]
http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D.announce&article_id=8642
0225デフォルトの名無しさん
2007/05/18(金) 22:48:06あとはconstなオブジェクトかあ。
0226デフォルトの名無しさん
2007/05/18(金) 23:03:192.0bの構想が既にあるってことは、もうすぐ2.0になるってこと?
0227デフォルトの名無しさん
2007/05/18(金) 23:04:34んでconstの意味も再確認
俺の無知さに乙
0228デフォルトの名無しさん
2007/05/18(金) 23:04:510229デフォルトの名無しさん
2007/05/18(金) 23:14:560230デフォルトの名無しさん
2007/05/18(金) 23:33:370231デフォルトの名無しさん
2007/05/19(土) 03:20:250232デフォルトの名無しさん
2007/05/19(土) 08:15:330233デフォルトの名無しさん
2007/05/19(土) 09:43:040234デフォルトの名無しさん
2007/05/19(土) 09:44:39ttp://en.wikipedia.org/wiki/List_of_compiler-compilers
0235デフォルトの名無しさん
2007/05/19(土) 11:11:39http://www.mbutscher.de/antlrd/
今のdmdで動くかどうかはしらない
0236デフォルトの名無しさん
2007/05/19(土) 22:59:440237232
2007/05/20(日) 00:06:090238デフォルトの名無しさん
2007/05/20(日) 13:07:12既存の物と組み合わせて、自分で書けばいいジャマイカ
それとも急を要すのか?
だったら、dsource上にあるのだったら、
http://www.dsource.org/projects/dgrammar
とかぐらいしかないぜ?
0239238
2007/05/20(日) 13:12:200240デフォルトの名無しさん
2007/05/20(日) 13:14:12まだあるけど?
http://svn.dsource.org/projects/dgrammar/
0241デフォルトの名無しさん
2007/05/20(日) 14:14:11a-hatena.com/bbsとかinterq.com/bbsとかなんだこれ。
0242デフォルトの名無しさん
2007/05/20(日) 18:07:43それ、最近、流行ってるwikiスパムだ
0243デフォルトの名無しさん
2007/05/20(日) 19:17:55そうか、直そうと思ったけどどこをいじればいいのか。。。
で、たぶん初歩的な質問だと思うんだけど、Win32APIのSetFileAttributesを使いたいんだが
関数定義しても使えない。
Kernel32.libをいじらないといけない?
0244デフォルトの名無しさん
2007/05/20(日) 19:43:38SetFileAttributesA とか SetFileAttributesW で定義してるかい?
0245デフォルトの名無しさん
2007/05/20(日) 19:48:33うん、してるんだけどね。。。って自己解決したんだ。
3時間悩んでここに書いた直後、extern(Windows)のつけ忘れってことにきづいた。ごめんね。
0246デフォルトの名無しさん
2007/05/20(日) 19:51:340247デフォルトの名無しさん
2007/05/20(日) 19:54:150248デフォルトの名無しさん
2007/05/20(日) 23:46:53という論を挙げておく。
0249デフォルトの名無しさん
2007/05/20(日) 23:47:450250デフォルトの名無しさん
2007/05/21(月) 00:44:520251デフォルトの名無しさん
2007/05/21(月) 00:45:55間違い方も流れも予想通りすぎてワロタwww
0252デフォルトの名無しさん
2007/05/21(月) 01:11:060253デフォルトの名無しさん
2007/05/21(月) 01:30:47考えがいったんリセットされて、そこで改めて考え直すことで
見落としに気づけるんだろうな。
いったん変な考えにとらわれるとなかなかそこから離れられないものだから。
全然関係ない話だけど、
mixin Slot!(Dummy)
.decl!("add", int, int,int)
.decl!("mul", int, int,int)
.end;
というような文で
int function(int, int) add;
int function(int, int) mul;
というような一定形式の宣言を行うテンプレートを、
macro(Slot){
int add(int,int);
int mul(int,int);
}
と書けるようになるのがmacroだといいなあ、と思った。
要は、D言語の適当な構文要素にあうトークン列を、
別の適当なD構文に組み替えるような機能。
0254デフォルトの名無しさん
2007/05/21(月) 01:53:200255デフォルトの名無しさん
2007/05/21(月) 01:55:040256デフォルトの名無しさん
2007/05/21(月) 02:59:14Erlangしようぜ、Erlang
0257デフォルトの名無しさん
2007/05/21(月) 08:46:360258デフォルトの名無しさん
2007/05/21(月) 10:37:580259デフォルトの名無しさん
2007/05/21(月) 16:11:210260デフォルトの名無しさん
2007/05/21(月) 17:46:19,',i><iヽ
/((ノノリノ)) ヒナの菊に
. ((ミi!゚ ヮ゚ノミ)) 指を入れてほしいの〜
(⊃⌒*⌒⊂) ∧_∧
/__ノ(i)ヽ__) ( )
._______ / ヽ
||\ / .| | |
||\..∧_∧ (⌒\|__./ ./
||. ( ) ~\_____ノ| ∧_∧
/ ヽ \| ( )
| ヽ \/ ヽ.
| |ヽ、二⌒) / .| | |
0261デフォルトの名無しさん
2007/05/21(月) 17:48:232.0b来れば、多分、Dでも大規模な機能変更は無いと思うし
0262デフォルトの名無しさん
2007/05/21(月) 18:14:25┃ ┃
┗━━━┛
0263デフォルトの名無しさん
2007/05/21(月) 18:19:572.0b -> 2.0RCで鬼のような仕様変更が予定されています
0264デフォルトの名無しさん
2007/05/21(月) 19:17:380265デフォルトの名無しさん
2007/05/21(月) 19:34:180266デフォルトの名無しさん
2007/05/21(月) 20:04:050267デフォルトの名無しさん
2007/05/22(火) 00:07:190268デフォルトの名無しさん
2007/05/22(火) 00:19:410269デフォルトの名無しさん
2007/05/22(火) 00:31:370270デフォルトの名無しさん
2007/05/22(火) 02:38:14つーかDFLってシンプルでいいよね
0271デフォルトの名無しさん
2007/05/22(火) 03:42:260272デフォルトの名無しさん
2007/05/22(火) 04:16:14……ような気がする。詳しい条件はよくわからんけど。
struct S { int a; }
struct S2 { S s; }
void main() { auto b = S2(); }
がとりあえず落ちた。S2の中身をintとSにすると平気。
既出だったらごめん。いまわりと困っている。
0273デフォルトの名無しさん
2007/05/22(火) 04:35:34Qt並のRADツールを備えたVC並の統合開発環境を無償で提供することだ。
これからのプログラミング言語はライブラリの充実がものをいうのであって、言語仕様は二の次なのだ。
0274デフォルトの名無しさん
2007/05/22(火) 05:44:06struct S2 { S s; };
void main() { auto b = S2(); }
0275デフォルトの名無しさん
2007/05/22(火) 07:20:54二の次っていうと極端だが、まぁそこ抜きに語るのが「不自然」であるという時代なのはその通り。
0276デフォルトの名無しさん
2007/05/22(火) 10:12:33落ちなかった。
試したのはWindows版dmdの1.014。
0277デフォルトの名無しさん
2007/05/22(火) 13:24:11同じなんだけどなあ。
俺の環境かな、とりあえずコンパイラ再インストールしてみる。スレ汚しすまん。
0278デフォルトの名無しさん
2007/05/22(火) 15:29:540279デフォルトの名無しさん
2007/05/22(火) 16:25:22DFLはかなりC#(というか.NET Framework?)の影響を受けているみたいで
先にそっちをやってると自然に使えるね
0280デフォルトの名無しさん
2007/05/22(火) 17:27:34ゲッタとセッタでプロパティ名を二回書くのはどうも無駄な気がするんだよな。
0281デフォルトの名無しさん
2007/05/22(火) 18:32:32ttp://www.kmonos.net/alang/wnd/topics/template.ja.html#strparam
かなり便利。
まあ言語のほうでなんか対策欲しいかなとは思う。
0282デフォルトの名無しさん
2007/05/22(火) 18:42:15メンバフィールドをただラップするだけでないプロパティに対応させるのは無理かね?
0283デフォルトの名無しさん
2007/05/22(火) 18:51:14メンバになんかの処理を行って返すような場合ってこと?
その「なんかの処理」が汎用的な場合ってあんま無いんじゃないのか。
「なんかの処理をつけ加える」汎用的な方法が欲しいってことならたぶん無理。
0284デフォルトの名無しさん
2007/05/22(火) 19:18:00template Property(T, char[] name, char[] getter = null, char[] setter = null) {
static if(getter)
mixin("public T " ~ name ~ "(){" ~ getter ~ "}");
static if(setter)
mixin("public T " ~ name ~ "(T value){" ~ setter ~ "return value;}");
}
class Klass {
mixin Property!(int, "prop", `
return 1;
`, `
writefln(value);
`);
}
void main() {
with(new Klass) prop = prop * 2;
}
こんなんとか。
0285デフォルトの名無しさん
2007/05/22(火) 19:28:200286デフォルトの名無しさん
2007/05/22(火) 21:39:27・クラス外からは読めるが書けない変数
・クラス外からは読めるが書きこみ時はメソッドで処理したい変数
とか欲しくなることはある
速度重視で直接アクセスしたいときに
0287デフォルトの名無しさん
2007/05/22(火) 21:49:27ちゃんと見てないが。
0288デフォルトの名無しさん
2007/05/22(火) 21:53:070289デフォルトの名無しさん
2007/05/22(火) 22:07:36ゲッタとセッタでプロパティ名を二回書くのが無駄な場合ってフィールドをpublicでいんじゃね?
0290デフォルトの名無しさん
2007/05/22(火) 23:04:49まあ実際のところはpublicでいいのかもしれない。やらんけど。
0291デフォルトの名無しさん
2007/05/22(火) 23:19:42classとかをプロパティにしたいときはpublicだと困るんじゃないか?
メンバ変数はfinalにならないみたいだし?
class HOGE{
final FUGA fuga;
this(){ fuga = new FUGA; }
}
class FUGA{ int data; }
void main(){
auto hoge = new HOGE;
hoge.fuga = new FUGA;// finalを無視?
hoge.fuga.data = 100;
/+...+/
}
0292デフォルトの名無しさん
2007/05/23(水) 00:32:11全然判らん。
0293デフォルトの名無しさん
2007/05/23(水) 01:07:080294デフォルトの名無しさん
2007/05/23(水) 01:08:590295デフォルトの名無しさん
2007/05/23(水) 06:14:270296デフォルトの名無しさん
2007/05/23(水) 08:28:420297デフォルトの名無しさん
2007/05/23(水) 08:32:380298デフォルトの名無しさん
2007/05/23(水) 12:09:37変更禁止はfinalじゃなくてconstじゃね
0299291
2007/05/23(水) 15:21:15コンパイル時に評価できる定数ってなってたからできないかと思ってた。
じゃあ変数に使うfinalってなんだ?
0300デフォルトの名無しさん
2007/05/23(水) 20:23:17それを世界65億人のphobos内に追記してくれ
0301デフォルトの名無しさん
2007/05/24(木) 00:11:18同時に入ってたんだけど結構レアっぽくね?
0302デフォルトの名無しさん
2007/05/24(木) 00:12:20誤爆です・・・
0303デフォルトの名無しさん
2007/05/24(木) 00:16:170304デフォルトの名無しさん
2007/05/24(木) 00:17:150305デフォルトの名無しさん
2007/05/24(木) 01:56:32やっぱりD言語使いにはゲームプログラマが多いんだなw
0306デフォルトの名無しさん
2007/05/24(木) 02:15:15このスレを見ている人はこんなスレも見ています。(ver 0.20)
【総合】FF6スレNo.84〜ついでに服も盗んだ〜 [FF・ドラクエ]
これか?
0307デフォルトの名無しさん
2007/05/24(木) 02:25:53ちげーよ。
0308デフォルトの名無しさん
2007/05/24(木) 07:10:26typedef enum {false, true} boolean;
0309デフォルトの名無しさん
2007/05/24(木) 07:39:58手首まだ俺も見たことねえのにうらやましいぜ
0310デフォルトの名無しさん
2007/05/24(木) 07:57:50ゲームプログラマじゃない俺はどうしたらいいんだろう…
0311デフォルトの名無しさん
2007/05/24(木) 13:07:02とりあえず歩調は合わせられるぞ。
0312デフォルトの名無しさん
2007/05/24(木) 14:57:420313デフォルトの名無しさん
2007/05/24(木) 19:22:320314デフォルトの名無しさん
2007/05/25(金) 08:30:190315デフォルトの名無しさん
2007/05/25(金) 13:13:210316デフォルトの名無しさん
2007/05/25(金) 13:25:40さぞすばらしい機能が追加されているに違いない
0317デフォルトの名無しさん
2007/05/25(金) 13:39:290318デフォルトの名無しさん
2007/05/25(金) 23:43:360319デフォルトの名無しさん
2007/05/26(土) 00:52:430320デフォルトの名無しさん
2007/05/26(土) 01:15:46それなんて Lisp ?
0321デフォルトの名無しさん
2007/05/26(土) 07:37:130322デフォルトの名無しさん
2007/05/26(土) 09:20:450323デフォルトの名無しさん
2007/05/26(土) 14:49:380324デフォルトの名無しさん
2007/05/26(土) 15:25:010325デフォルトの名無しさん
2007/05/26(土) 16:34:150326デフォルトの名無しさん
2007/05/26(土) 16:45:49順々にコンパイラをコンパイルしたコンパイラを遡っていくと何にたどり着くんだろう
0327デフォルトの名無しさん
2007/05/26(土) 16:46:59インタプリタ
0328デフォルトの名無しさん
2007/05/26(土) 16:53:42H2O
0329デフォルトの名無しさん
2007/05/26(土) 16:56:18職人が紙テープにせっせと穴あけたりしてたのにたどり着くんだろうと思うと、ワクワクするなw
0330デフォルトの名無しさん
2007/05/26(土) 17:01:070331デフォルトの名無しさん
2007/05/26(土) 17:11:46マジレスするとCコンパイラ
お陰でKen Thompsonが自分で言うまで誰もバックドアに気がつかなかった
ttp://memo.xight.org/2006-08-16-5
ttp://cm.bell-labs.com/who/ken/trust.html
0332デフォルトの名無しさん
2007/05/26(土) 17:12:550333デフォルトの名無しさん
2007/05/26(土) 17:22:38文字列の型: const(char)[] と cstring
新しいconst/invariant/finalの制度のもとでは、文字列はどうなりますか?
他の言語の経験によると、文字列はイミュータブルであるべきであると思います。
定文字の配列を表すために、こう書くでしょう:
const(char)[]
しかし、それが明確であるのにキーボードですらすらと打てません。文字列が非常に一般的であるのでこのように別名を必要とします:
alias const(char)[] cstring;
何故 cstring なのか。それは"文字列"はモジュール名と公共(common)の変数名の両方に表れるからです。また、cstringの導入ははwcharの文字列の為のwstringと、dcharの文字列の為にdstringを含みます。
その一方で文字列リテラルはinvariantにするでしょう(読み込み専用メモリに入れることができるのを意味します)。なので:
typeof("abc")
は
invariant(char)[3]
となります。
暗黙的にinvariantをconstにキャスト可能です。
私がソースコードをいじくったところ、かなりうまく解決するように思えます。
何故cstringをinvariant(char)[]のエイリアスにしないのか。そのようにすると、文字列は確かに不変になるでしょう。 理由はミュータブルをinvariantに暗黙的にキャストすることができないということです(これはコードには多くのキャストがあるのを意味してます)。
キャストはハンマーであり、あまりにたくさんのキャストを必要とするコーディングスタイルは悪いコーディングスタイルです。
0334デフォルトの名無しさん
2007/05/26(土) 17:33:010335デフォルトの名無しさん
2007/05/26(土) 17:40:26色々許可する方を指定した方がいいと思う。
0336デフォルトの名無しさん
2007/05/26(土) 17:41:180337デフォルトの名無しさん
2007/05/26(土) 17:59:48-型としてinvariant(type)とconst(type)が追加になる
-const(type)は値が一定。ようは実行時に一意に決まる。
-invariant(type)は値が不変。ようはコンパイル時に一意に決まる。
-暗黙的にinvariantをconstにキャスト可能
-暗黙的にミュータブルをconstにキャスト可能
-暗黙的にミュータブルをinvariantにキャストは不可
ってことだと思う。間違ってたらスマソ。
0338デフォルトの名無しさん
2007/05/26(土) 18:52:25ココね。>>333の訳は翻訳機にかけたような文体で漏れは好きじゃないなぁ(ゴメンね)
ちなみに、漏れはBjörklund氏の「cstring?ハァ?ダッセー(プッ」的な意見に賛成だ。
0339デフォルトの名無しさん
2007/05/26(土) 19:00:29ただしstr/cstr/istrと分かれるならそっちの方が良い。
0340デフォルトの名無しさん
2007/05/26(土) 19:01:270341デフォルトの名無しさん
2007/05/26(土) 19:04:56UTF-16版がwcstringになる。
トイレかよ。
0342デフォルトの名無しさん
2007/05/26(土) 19:13:30文字列のずらしとかが遅くなるの嫌なんだけど。
0343デフォルトの名無しさん
2007/05/26(土) 19:15:11バグが起きなくなる。
0344デフォルトの名無しさん
2007/05/26(土) 19:19:20>>341
それ、何てMozilla?
0345デフォルトの名無しさん
2007/05/26(土) 19:19:23これパフォーマンス厨が良くやらかすんだよなwwwwwww
0346デフォルトの名無しさん
2007/05/26(土) 19:20:140347デフォルトの名無しさん
2007/05/26(土) 19:26:56cwstringだろ、常識的に考えて。
0348デフォルトの名無しさん
2007/05/26(土) 19:29:39"あいう"[0] がどうしても1文字目じゃなく1バイト目になってしまうのは
この言語の宿命なのか。
しかしconst(type)とかinvariant(type)とか、
いつの間に()が要るようになってるんだろう。
前置キーワード方式じゃダメだったのかな。
0349デフォルトの名無しさん
2007/05/26(土) 19:30:490350デフォルトの名無しさん
2007/05/26(土) 19:34:51inをコピーじゃなくして、デバッグビルド時にoutでassertかませば性能面の問題も起きないと思うけどなぁ。まぁマルチスレッドで問題起きるけど。
0351デフォルトの名無しさん
2007/05/26(土) 19:42:16組み込み機器じゃGCとかあるようなDなんて使えないだろうし。
0352デフォルトの名無しさん
2007/05/26(土) 19:44:25データの内容が書き換わらないことが保証されてると
コードがとても単純になって可読性・保守性がよくなる。
# でも一時変数を使い回しまくってると意味無いな……ええい引数に代入するな!
# しかもすぐ捨てる作業用オブジェクトを! しかもfor文の中のif文の中で!
# for文抜けた後でも参照してるじゃねぇか、このコードまずいだろ!?
0353デフォルトの名無しさん
2007/05/26(土) 19:45:42いっそのこと標準でinにしちゃえばいいのにな。
0354デフォルトの名無しさん
2007/05/26(土) 19:48:53># でも一時変数を使い回しまくってると意味無いな……ええい引数に代入するな!
inになってる引数に代入してそのまま返してる関数が多数な俺。
やっぱりauto rv=arg;って一行入れるべきだよなぁ>俺。
># しかもすぐ捨てる作業用オブジェクトを! しかもfor文の中のif文の中で!
># for文抜けた後でも参照してるじゃねぇか、このコードまずいだろ!?
これは現状でもD言語では無問題だしなぁ。
0355デフォルトの名無しさん
2007/05/26(土) 20:02:52* 変数 str は const
* 変数 str の型は、(const char[])
のどっちなの?
0356デフォルトの名無しさん
2007/05/26(土) 20:06:36現状ではどっちでも大差無い。まぁソース嫁。
0357デフォルトの名無しさん
2007/05/26(土) 20:44:570358デフォルトの名無しさん
2007/05/26(土) 21:53:50GCに怯えすぎ。
組み込みだろうと問題にならない。
0359デフォルトの名無しさん
2007/05/26(土) 22:36:540360デフォルトの名無しさん
2007/05/26(土) 22:43:390361デフォルトの名無しさん
2007/05/26(土) 22:49:250362デフォルトの名無しさん
2007/05/26(土) 23:18:14って思ったけど携帯とかずっと前からJava入ってるんだよな……
DのGCくらい携帯以外でも楽勝なのか。
0363デフォルトの名無しさん
2007/05/26(土) 23:35:42お前のセンスに嫉妬
0364デフォルトの名無しさん
2007/05/26(土) 23:53:06ほほう
これはなかなか
0365デフォルトの名無しさん
2007/05/26(土) 23:57:53わずか六分か。脱帽だな。
0366デフォルトの名無しさん
2007/05/27(日) 03:02:590367デフォルトの名無しさん
2007/05/27(日) 03:03:370368デフォルトの名無しさん
2007/05/27(日) 03:10:520369デフォルトの名無しさん
2007/05/27(日) 06:34:10まぁ DOS くらいならいまの D でも書けそうだ w
0370デフォルトの名無しさん
2007/05/27(日) 11:09:290371デフォルトの名無しさん
2007/05/27(日) 13:35:520372デフォルトの名無しさん
2007/05/27(日) 14:39:060373デフォルトの名無しさん
2007/05/27(日) 14:40:18あなたがウォルターか
0374デフォルトの名無しさん
2007/05/27(日) 14:43:10MonaOSがそんな感じだったような。ただD言語のgcは一部の型を把握するようになったから、そう簡単にはいかないだろうけど。
0375デフォルトの名無しさん
2007/05/27(日) 14:48:45D言語で、interactive shell(pythonみたいに、対話的に一行ずつ
実行できるようなもの)ってありますでしょうか。
その場でスクリプトをコンパイルして実行という機能がはあったんですが・・・
0376デフォルトの名無しさん
2007/05/27(日) 15:03:00共通型システムみたいなものを導入すればいいんじゃね?
0377デフォルトの名無しさん
2007/05/27(日) 15:06:52まぁそうだけど。
0378デフォルトの名無しさん
2007/05/27(日) 15:08:12Monaにそんな機能はないよ。正直メモリ関連は結構ややこしい方だと思う。
0379デフォルトの名無しさん
2007/05/27(日) 18:00:39ないと思う。
そういう用途としては python なり ruby なりを使った方がいい。
0380デフォルトの名無しさん
2007/05/27(日) 19:47:250381デフォルトの名無しさん
2007/05/27(日) 19:51:520382デフォルトの名無しさん
2007/05/27(日) 19:57:300383375
2007/05/27(日) 20:48:25自分でもいろいろ探していたんですが、やっぱりないんですね〜残念。
実は主にpythonとC++を使っているんですが、どっちも一長一短でなにかいい方法が
ないか探していたんです。D言語でまとめられたら、凄くハッピーだったのですけど。
主に使う用途としてはデータ解析などなので、bashだとちょっと厳しいです。
変数の内容を保持したまま、対話的に関数が呼べるものを探していました。
話はちょっと変わりますが、Dの言語仕様、ver1で一旦新しい追加は置いておいて、
bug fix重点的にやるって噂ですね。
これで少しは落ち着いてアプリが作れる・・・かな?
0384デフォルトの名無しさん
2007/05/27(日) 20:51:20そんなことは無いが、後方互換は保たれてる。
0385デフォルトの名無しさん
2007/05/27(日) 21:12:460386デフォルトの名無しさん
2007/05/27(日) 21:29:38そっちが優先されるかも。
0387デフォルトの名無しさん
2007/05/27(日) 21:31:52const/invariant/finalの話ってどう思う?
はっきり言ってinvariant要らないような気がするんだが。
0388デフォルトの名無しさん
2007/05/27(日) 21:37:520389デフォルトの名無しさん
2007/05/27(日) 21:38:060390デフォルトの名無しさん
2007/05/27(日) 21:54:49以下、Walter氏が示したcode例
int x = 3;
final int* p = &x;
p = null; // error, p is final
*p = 1; // ok
const(int)* q = null;
q = &x; // ok, q is not const, and now *q is 1
*q = 2; // error, *q is const
*p = 5; // ok, but now *q is 5, too!
x = 6; // ok, but now *q is 6
invariant(int)* s = null;
s = &x; // error, cannot implicitly convert int* to invariant(int)*
int y = 4;
s = cast(invariant(int)*)&y; // ok, trust programmer that y is immutable
*s = 3; // error, *s is immutable
y = 5; // undefined behavior, as y is never supposed to change,
// and compiler assumes *s is still 4
<X>(char)[] parm; に対して
*-------------------------------------*
| <X> + parm.ptr | parm[0] |
|-------------+-----------------------+
| const | mutable | immutable |
| final | immutable | mutable |
| invariant | mutable | immutable |
| (何も無し) | mutable | mutable |
*-------------------------------------*
0391デフォルトの名無しさん
2007/05/27(日) 21:58:59constな値へのポインタは
指している先が別のところで書き換えられることが
有り得るのに対して、
invariantな値へのポインタは
書き換わることがないと仮定されている
(書き換えると未定義動作になる)
おそらく関数引数(const)とリテラル(invariant)を
想定していると思われるが、
invariantってのは結局コンパイラ側の都合で
あった方がいいというだけのように思えるんだ。
ちなみに
Note that int* can be implicitly converted to const(int)*, and invariant(int)* can be implicitly converted to const(int)*.
(意訳) int*はconst(int)*に暗黙的にキャストされ、invariant(int)*は暗黙的にconst(int)*にキャストされます
とのこと。
0392デフォルトの名無しさん
2007/05/27(日) 22:01:12> 書き換わることがないと仮定されている
訂正
> invariantな値へのポインタは
> 指している先の値が書き換わることがないと仮定されている
0393デフォルトの名無しさん
2007/05/27(日) 22:14:16しかし、invariantはプログラマは滅多に使う機会ないんでない?
最適化効率が上がるんならあってもいいように思うな。
0394デフォルトの名無しさん
2007/05/27(日) 22:18:09あまり使わないのなら長い方がいいな。
0395387=390-392
2007/05/27(日) 22:40:15invariantな値というのはつまり、
"あいうえお"
[ 1, 2, 3, 4, 5 ]
などのコンパイル時に決定される値ということだよな。
([ x, x+1, x+2 ]とかは実行時に決定されるので範疇に入らない)
これらはconst値に暗黙変換されるから、使う方としては
const(char)[] s = "あいうえお";
の様にconstで受ければいいのか。
それなら invarint〜 と頻繁に書く必要はほとんどないな。
*でも結局はconstで受けるんだから、>>393が言うような最適化効率には
あまり貢献しないような…? あ、autoを使えってことか?
ただ、
char[] = "あいうえお";
はたぶん暗黙変換エラーになると思われるので、
そのあたりを意識してCodeを書けということだろうか。
0396デフォルトの名無しさん
2007/05/27(日) 23:38:14char[] = "あいうえお"
はコピーになってくれないと正直困る。
0397デフォルトの名無しさん
2007/05/28(月) 14:59:250398デフォルトの名無しさん
2007/05/28(月) 15:01:450399デフォルトの名無しさん
2007/05/28(月) 15:02:07char[] = "あいうえお".dup;
しろってことになるかもな
0400デフォルトの名無しさん
2007/05/28(月) 15:18:08失敗だったらバッサリ切り捨てるだろうから心配はしてないがw
0401デフォルトの名無しさん
2007/05/28(月) 15:37:26http://www.kmonos.net/alang/d/arrays.html#strings
> 文字列リテラルは immutable (読み取り専用)です。
> char[] str;
> char[] str1 = "abc";
> str[0] = 'b'; // エラー。"abc" は読み取り専用。クラッシュの可能性あり
現状でも、dupるなりしなきゃまずいと思う。
0402デフォルトの名無しさん
2007/05/28(月) 15:58:08意味なくね?
constとかの場合のみでよくね?
0403デフォルトの名無しさん
2007/05/28(月) 17:29:08C/C++ だってそうだ。
"abc" と "bc" ってのがあった場合に
重ねて置ける最適化ができるというのもそうだけど、
唯一しかないものをホイホイ書き換えられても困る。
問題は char[] str1 = "abc"; とした時に、
str1 が文字列リテラル自身を指すことになってしまう点。
C/C++ みたいに、文字列リテラルで配列変数を初期化する場合は、
特別にコピーが発生するようにすべき。
0404デフォルトの名無しさん
2007/05/28(月) 18:36:16そこらへんが上にあった変更で改善されるわけだな。
書き換えるならdupれ、書き換えないならconstにしろ、
という感じか。
0405デフォルトの名無しさん
2007/05/28(月) 18:51:33そうでなければ自動的にコピーして欲しい。
その方が自然だと思う。
0406デフォルトの名無しさん
2007/05/28(月) 19:00:540407デフォルトの名無しさん
2007/05/28(月) 19:13:420408デフォルトの名無しさん
2007/05/28(月) 19:21:510409デフォルトの名無しさん
2007/05/28(月) 21:03:270410デフォルトの名無しさん
2007/05/28(月) 23:44:310411デフォルトの名無しさん
2007/05/28(月) 23:51:480412デフォルトの名無しさん
2007/05/29(火) 00:11:28char[] bar = "str"; // コピー
とか。ややこしいだけか。
0413デフォルトの名無しさん
2007/05/29(火) 01:59:03コピーは何回発生するでしょうか?
0414デフォルトの名無しさん
2007/05/29(火) 02:05:040415デフォルトの名無しさん
2007/05/29(火) 02:34:16プログラムは日増しに組みにくくなってる。
0416デフォルトの名無しさん
2007/05/29(火) 02:56:24あまりに組みやすさが犠牲になると流石に困るよな。
0417デフォルトの名無しさん
2007/05/29(火) 03:02:360418デフォルトの名無しさん
2007/05/29(火) 05:53:17コンパイル時解決されないか?
0419デフォルトの名無しさん
2007/05/29(火) 12:43:080420デフォルトの名無しさん
2007/05/29(火) 15:08:06クロスプラットフォームのならDWTか。
0421デフォルトの名無しさん
2007/05/29(火) 16:26:34それ用にクラスつくったりstdlib.c.qsortを使えというのはなしで
0422デフォルトの名無しさん
2007/05/29(火) 17:16:430423デフォルトの名無しさん
2007/05/29(火) 17:56:27どうもです。でも理解できません。
delegate使ってどうやってやるんですか?sortはdelegateを受け取らないと思います。
また関数ポインタでやるならqsortと変わらないと思います。
単純なchar[][]の場合もdelegateで解決できるんでしょうか?
0424デフォルトの名無しさん
2007/05/29(火) 18:40:050425デフォルトの名無しさん
2007/05/29(火) 19:12:58foreach( int i; char[] s; ss) {
writefln( s);
}
こんなのって無理ですか?
0426デフォルトの名無しさん
2007/05/29(火) 19:17:40は
foreach( int i, char[] s; ss) {
だな。
0427デフォルトの名無しさん
2007/05/29(火) 19:26:44ありがとうございます・・・
すいませんでした
0428デフォルトの名無しさん
2007/05/29(火) 19:30:080429デフォルトの名無しさん
2007/05/29(火) 23:33:240430デフォルトの名無しさん
2007/05/30(水) 06:03:58自分で定義して直接呼ばないとだめ?
0431デフォルトの名無しさん
2007/05/30(水) 06:10:090432デフォルトの名無しさん
2007/05/30(水) 08:46:11import internal.qsort;
T[]sort(T)(T[]a,bool delegate(T,T)dg){
static class Ti : TypeInfo{
bool delegate(T,T)dg;
override size_t tsize(){return typeid(T).sizeof;}
override int compare(void*a,void*b){
return dg(*cast(T*)a,*cast(T*)b) ? -1 : dg(*cast(T*)b,*cast(T*)a);
}
}
scope t=new Ti;t.dg=dg;
_adSort(Array(a.length,a.ptr),t);
return a;
}
import std.stdio;
void main(){
int []a=[3,4,2,4];
writefln(a);
a.sort((int a,int b){return a<b;});
writefln(a);
a.sort((int a,int b){return a>b;});
writefln(a);
}
0433デフォルトの名無しさん
2007/05/30(水) 09:20:34ありがとうございます
フレームワークは何が標準ですか?
0434423
2007/05/30(水) 10:55:14レスありがとうございます。
テンプレート+デリゲートですか。私の足りない頭では理解が・・・
残念ながらこのコードはgdcだとコンパイルが通りませんでしたが、参考にして
ポートしてみます。
0435デフォルトの名無しさん
2007/05/30(水) 10:59:17ありがとうございます。
ところでカレーはスパイスだけでも作れますか?
0436デフォルトの名無しさん
2007/05/30(水) 17:35:09http://www.dsource.org/projects/tango/forums/topic/12#468
http://www.prowiki.org/wiki4d/wiki.cgi?DanielKeep/Variant
phobos,tango両方で動くやつを書いた人がでました
よさげ
0437デフォルトの名無しさん
2007/05/30(水) 19:44:49ttp://www.prowiki.org/wiki4d/wiki.cgi?WindowsAPI
ttp://wiki.dprogramming.com/Dfl/HomePage
0438デフォルトの名無しさん
2007/05/31(木) 12:30:530439デフォルトの名無しさん
2007/05/31(木) 16:46:59これはいいな
0440デフォルトの名無しさん
2007/05/31(木) 22:38:02どうしたらいいのでしょうか?
(この発想からしてダメかも知れませんが…)
一回目は配列全体をメンバ変数intを対象にしてソートします
二回目はスライスを用いて
{0..8}のように特定の範囲のみを相手に
メンバ変数のchar[]を対象にソートしたいのですが
なかなか良い作り方が分からず…
少し上でもソートが出てましたが
難しいそうですね…
どのようにすれば良いでしょうか
0441デフォルトの名無しさん
2007/05/31(木) 23:27:320442デフォルトの名無しさん
2007/05/31(木) 23:37:04///クイックソート
template quickSort(alias cmp){
void quickSort(T)(T[] a){
void loop(int l, int r){
auto i = l;
auto j = r;
auto pivot = a[(l + r) / 2];
for(;;){
while(cmp(a[i], pivot)){
i++;
}
while(cmp(pivot, a[j])){
j--;
}
0443デフォルトの名無しさん
2007/05/31(木) 23:37:49break;
}
auto tmp = a[i];
a[i] = a[j];
a[j] = tmp;
i++;
j--;
}
if(l < i - 1){
loop(l, i - 1);
}
if(r > j + 1){
loop(j + 1, r);
}
}
loop(0, a.length - 1);
}
}
///比較関数
bool more(T)(T a, T b){
return a < b;
}
0444デフォルトの名無しさん
2007/05/31(木) 23:56:01ソート以外にもbinary_searchとかrandom_shuffle, find_ifとか使いでがあるし。
クイックソートだけじゃなくてマージソートも欲しい。
import std.algorithmとかで実装されないかな。
0445デフォルトの名無しさん
2007/06/01(金) 00:04:080446デフォルトの名無しさん
2007/06/01(金) 02:33:17DTLはどうなったんだ?
bindならid:shinichiro_hさんが
std::functionalならid:rinsetさんがだいぶ前にやってたような気がする
0447デフォルトの名無しさん
2007/06/03(日) 00:27:520448デフォルトの名無しさん
2007/06/03(日) 00:31:45各所で爆釣れワロタ
0449デフォルトの名無しさん
2007/06/03(日) 00:45:420450デフォルトの名無しさん
2007/06/03(日) 08:46:430451デフォルトの名無しさん
2007/06/03(日) 10:09:150452デフォルトの名無しさん
2007/06/03(日) 12:04:23SWTも対象だったような・・・
0453デフォルトの名無しさん
2007/06/03(日) 12:06:48DWT
0454デフォルトの名無しさん
2007/06/03(日) 19:10:28k.inabaさんが紹介してたよ
つhttp://www.kmonos.net/alang/wnd/topics/tioport.ja.html
0455デフォルトの名無しさん
2007/06/06(水) 00:54:04-vでバージョンを確認したらdmd 1.010なんだけどこれが最新?
このスレに1.014という記述があるんだけど・・・
0456デフォルトの名無しさん
2007/06/06(水) 00:57:550457デフォルトの名無しさん
2007/06/06(水) 06:27:01シングルトンパターンってあんま意味ないのかな?
初期化のタイミングを調整できるって程度か。
0458デフォルトの名無しさん
2007/06/06(水) 11:22:54class Hogehoge {
static:
fugafuga;
}
ってクラスの先頭にstatic:つければほぼシングルトンパターンじゃね
0459デフォルトの名無しさん
2007/06/06(水) 11:24:300460デフォルトの名無しさん
2007/06/06(水) 12:50:390461デフォルトの名無しさん
2007/06/06(水) 16:08:020462デフォルトの名無しさん
2007/06/06(水) 16:30:380463デフォルトの名無しさん
2007/06/06(水) 16:31:20該当なし
しょぼーん
0464デフォルトの名無しさん
2007/06/06(水) 16:32:540465デフォルトの名無しさん
2007/06/06(水) 21:02:49気がついてないんだろうか
0466デフォルトの名無しさん
2007/06/06(水) 21:04:300467デフォルトの名無しさん
2007/06/06(水) 22:56:27誰か報告する(した)人いる?
0468デフォルトの名無しさん
2007/06/06(水) 23:20:43リリース関係についてなかなかおもしろい議論がされてた
それを受けて開発参加者のうちの1人(?)からmy visionとして
・あと1・2ヶ月でTangoリリース
・2008年はじめごろにD2.0リリース
というロードマップが示されてたのでいちお報告
0469デフォルトの名無しさん
2007/06/07(木) 02:28:200470デフォルトの名無しさん
2007/06/07(木) 07:44:280471デフォルトの名無しさん
2007/06/07(木) 11:53:43むしろお願いします
>>470
例によってcastが必要だな
//for dmd 1.015
void main(){
char[][char[]] s = [cast(char[])"key_hoge":cast(char[])"hoge","key_hogehoge":"hogehoge"];
}
0472デフォルトの名無しさん
2007/06/07(木) 14:12:460473デフォルトの名無しさん
2007/06/07(木) 15:24:220474デフォルトの名無しさん
2007/06/07(木) 15:46:36import std.boxer;
class ArrayList {
Box[] array;
int Add(T)(T x) {
int idx = array.length;
array.length = array.length + 1;
array[idx] = box(x);
return idx;
}
int opApply(int delegate(ref Box) dg) {
int result = 0;
for (int i = 0; i < array.length; i++) {
result = dg(array[i]);
if (result) break;
}
return result;
}
}
0475デフォルトの名無しさん
2007/06/07(木) 16:30:200476デフォルトの名無しさん
2007/06/08(金) 02:30:310477デフォルトの名無しさん
2007/06/08(金) 05:03:230478僕は上げたい
2007/06/08(金) 05:27:29int main(char[][] args)
{
printf("吉田十四朗です。一応180cmのイケメン19歳です。\n");
retrun 0;
}
WinXpでこれを普通にコンパイルしようとするとUTF-8がどうのこうのと文句いってコンパイルできません。それで、ソースの保存の際にUNICODEでソースを
保存してコンパイルすると、きちんとコンパイルできるのですが、激しく
文字化けをします。 どうしたらいいのでしょう?
0479デフォルトの名無しさん
2007/06/08(金) 05:42:13std.windows.charset だかに入ってるtoMBSzを使ってS-JISに変換とかしないとだめぽいよ
0480デフォルトの名無しさん
2007/06/08(金) 07:40:43import std.windows.charset;
int main(char[][] args)
{
char[] msg = "吉田十四朗です。一応180cmのイケメン19歳です。\n";
printf("%s", toMBSz(msg));
}
>>478
もっと言うなら、k.inabaさんのtxとか使ったほうが良い。
後はココを読めばおk
ttp://www.kmonos.net/alang/wnd/topics/pitfall.ja.html
0481デフォルトの名無しさん
2007/06/08(金) 07:47:22m(_ _)mありがとうございます
0482デフォルトの名無しさん
2007/06/08(金) 07:53:24import std.stdio;
import std.windows.charset;
void main()
{
char[] msg = "ほげ!";
printf("%s", toMBSz(msg));
writefln("%s", msg);
}
こういうコードで、UTF-8なコンソールだと、toMBSzの方が化けるな・・・
一回の出力で違う文字コードがあると化けるって事か。
でも、これって、一行ずつバッファしててそのバッファ毎にコード変えていれば、表示できなくね?
struct LineBuffer
{
struct LineBuffer *next;
struct LineBuffer *prev;
char *data;
unsigned long length;
unsigned int code_page;
};
みたいなのでさ。
0483デフォルトの名無しさん
2007/06/08(金) 15:20:11void hoge(int);
}
T hoge(T)(T[] a) {
return a[0];
}
void main() {
int[1] a;
writefln(a.hoge());
}
これで、conflict するのは仕様?
0484デフォルトの名無しさん
2007/06/08(金) 22:58:10おk つたない英語で(しかもつづり間違えたw)報告しておきました
まだ認知されてないバグだったようです
>>483
スマン 漏れにはよくわからないがtemplete書かずにそういうのができるんだっけ?
0485デフォルトの名無しさん
2007/06/08(金) 23:25:56"string literal"[]
でchar[]型になるよん。
0486デフォルトの名無しさん
2007/06/08(金) 23:47:15乙
どこに報告したの?
0487デフォルトの名無しさん
2007/06/09(土) 00:35:41コレでしょ。
0488デフォルトの名無しさん
2007/06/09(土) 13:41:41ログインしないと見ることもできないのか?
使い方わかんね・・・orz
0489デフォルトの名無しさん
2007/06/09(土) 18:53:11そうそれです
>>488
ログインとかはないはず・・・
ひょっとしてニュースグループ全体のツリーに飛んじゃった?
なんか夏にD言語のカンファレンスがアメリカで開催されるらしいけど
誰か日本から参加する人いるのかな・・・
0490デフォルトの名無しさん
2007/06/09(土) 23:07:44へ?マジで?
生Walterタソが見れるのか。
0491デフォルトの名無しさん
2007/06/09(土) 23:14:27ttp://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D.bugs&article_id=11355
こっちに飛んでから下のツリーを辿るとおかしなページに飛ばされるような
最初のツリーに載っている返事はどうやったら読めるのだろう
0492デフォルトの名無しさん
2007/06/09(土) 23:16:020493デフォルトの名無しさん
2007/06/09(土) 23:33:02ニュースサイト全体のツリーでbugsのリストを取得してから
>>491のページに行くとちゃんと.bugsがつくから
サイト全体のリストを通さず直に行くっていうのが仕様外なのかなw
微妙にリスト表示のページも変な挙動するなと思ってたら・・・
んじゃこれも報告しとく
0494デフォルトの名無しさん
2007/06/10(日) 16:39:08ddbgによるステップ実行はできているようなのですが、Eclipseとうまく連携できていないようで、
ソースファイルを見つけることができず、ステップ実行している箇所の矢印が現れませんorz
Eclipseのソース・ルックアップ・パスの編集は、しっかり行っているつもりです。
現在、疑っているのはコンパイルとリンク時のパラメータ設定ですが、
他に出来ている方がいないようでしたら諦めようかと・・・
0495デフォルトの名無しさん
2007/06/11(月) 03:32:12WindowsCEで動く小物とか作りたいんだけど。
0496デフォルトの名無しさん
2007/06/11(月) 03:42:150497デフォルトの名無しさん
2007/06/11(月) 05:12:540498デフォルトの名無しさん
2007/06/11(月) 08:25:06ttp://d.hatena.ne.jp/haru-s/20061126/1164564951
この辺参考にならん?ーgオプションはつけてるよねぇ
0499デフォルトの名無しさん
2007/06/13(水) 02:55:51しらんかった・・・
0500デフォルトの名無しさん
2007/06/13(水) 03:34:17cast(char[])"hoge" as "hoge"c[]
cast(wchar[])"hoge" as "hoge"w[]
cast(dchar[])"hoge" as "hoge"d[]
0501デフォルトの名無しさん
2007/06/13(水) 17:04:25ttp://mainia.de/allpaged.zip
0502デフォルトの名無しさん
2007/06/13(水) 17:56:450503デフォルトの名無しさん
2007/06/13(水) 18:10:16foreach(char[] lib;libs)
{
char[] s = lib;
char[] d = std.path.join(destination,getBaseName(lib));
char[] command = std.string.format("%s \"%s\" \"%s\"",converter,s,d);
dout.writefln(command);
exec(converter,[converter,s,d]);
// system(command ~ ">dump.log");
}
なぜ動かない。execだとforeachにならずにexecからプログラム抜ける。
ほかのソフトを起動する方法はほかにないのだろうか?
// systemだと正常に動くけど…
0504デフォルトの名無しさん
2007/06/13(水) 19:14:09spawn系では?
0505デフォルトの名無しさん
2007/06/13(水) 20:10:48正規表現中にユニコードの文字が入ると案の定うまくいきません。
うまいことShift_JISの文字列を読み込んで処理する方法はないものでしょうか。
対象のファイル自体をUTF-8に変換するってのはできればナシでお願いします。
(他のプログラムが吐くログが本来の対象なので)
----- main.d -----
import std.regexp;
import std.stdio;
import std.stream;
int main(char[][] args){
auto r = new RegExp("(ほげ)+");
auto fp = new BufferedFile("hoge.txt", FileMode.In);
foreach(char[] line; fp){
foreach(char[] s; r.exec(line))
writefln(s);
}
return 0;
}
----- hoge.txt (Shift_JIS) -----
ほげ
ほげほげ
もげ
---------------------------
0506デフォルトの名無しさん
2007/06/13(水) 20:15:30あるいはRegExpに与える文字列をShiftJISバイト列で書くとか
0507デフォルトの名無しさん
2007/06/13(水) 20:52:24やっぱりそれですかね。できれば標準ライブラリのみで完結したかったのですが・・・
とりあえずShift_JIS→UTF-8の変換ライブラリを導入して一応解決したので質問を終えたいと思います。
回答ありがとうございました。
0508デフォルトの名無しさん
2007/06/13(水) 23:39:47int main(char[][] args){
auto r = new RegExp("(ほげ)+");
auto fp = new BufferedFile("hoge.txt", FileMode.In);
foreach(char[] line; fp){
foreach(char[] s; r.exec(fromMBSz((line~'\0').ptr)))
printf("%s\n", toMBSz(s));
}
return 0;
}
だめ?
0509デフォルトの名無しさん
2007/06/14(木) 19:38:54うちも最初はそうだったけど、「外部ツール」の設定でdmdの起動引数にソースコード名を直接記述してやると
上手くソースコード上でステップ実行できるようになったよ。
あと、うちの環境ではwindow blinds入れていたら、dwtが上手くデバック実行出来なかった。
→wbsys.dllが起動時にACCESS VIOLATIONおこすぽい。
Visual StudioとかはDLLの読込でACCESS VIOLATION発生しても大丈夫なのに・・・
0510505
2007/06/14(木) 20:55:28その方法で動作する事を確認しました。ありがとうございました。
ただ、このUTFに一旦変換するやり方では、UTFの変換のオーバーヘッドのためか
プロトタイプ用に書いたスクリプトに速度で負ける有様です。(実際にはログが数十MBほどあります)
C++あたりで書いたほうが幸せになれるのでしょうか。
RegExpにShift_JIS文字列を渡す方法だとより難儀なはまり方をしてしまいそうです。
0511デフォルトの名無しさん
2007/06/14(木) 21:48:30っBoost
0512デフォルトの名無しさん
2007/06/15(金) 01:35:36てゆーかphobosのstd.regexpは死ぬほど遅いから
普通にRubyとかPerlの正規表現には速度で負けるとおもう
0513デフォルトの名無しさん
2007/06/15(金) 02:36:060514デフォルトの名無しさん
2007/06/15(金) 02:40:50目下D2.0の仕様を検討中。
0515デフォルトの名無しさん
2007/06/15(金) 04:05:090516デフォルトの名無しさん
2007/06/15(金) 08:31:170517デフォルトの名無しさん
2007/06/15(金) 11:12:410518デフォルトの名無しさん
2007/06/15(金) 17:39:27まさにそれだな。v1の互換も落とすって言ってるし。
0519デフォルトの名無しさん
2007/06/15(金) 17:41:450520デフォルトの名無しさん
2007/06/15(金) 18:00:53過去の自分にさえとらわれないどこまでも前向きな言語
それでこそ僕らのウォルターたん
0521デフォルトの名無しさん
2007/06/15(金) 20:53:38ttp://www.kmonos.net/alang/d/
・・・シアトルか、遠いな。
0522デフォルトの名無しさん
2007/06/15(金) 21:16:040523デフォルトの名無しさん
2007/06/15(金) 21:20:04コンパイルも早いし、C++の知識があればすんなり入り込めるのもディモールト良い
0524デフォルトの名無しさん
2007/06/15(金) 22:03:31実用の意味による。
少なくとも仕事で使うわけに行かない場合がある(標準が策定されていないとか)
採用者の責任が取れる範囲で類焼しない小さなプロダクトならいいんじゃないの?
0525デフォルトの名無しさん
2007/06/15(金) 22:04:42D言語は初心者向けのの言語ではありません。初心者にはJavaかVBをお勧めします(Walter談)。
0526525
2007/06/15(金) 22:05:410527デフォルトの名無しさん
2007/06/15(金) 23:46:460528デフォルトの名無しさん
2007/06/16(土) 01:06:070529デフォルトの名無しさん
2007/06/16(土) 01:07:03ABAさんのちょっと前のゲームのソースとか、もうコンパイルできなくなってて吹いた
0530デフォルトの名無しさん
2007/06/16(土) 11:04:070531デフォルトの名無しさん
2007/06/16(土) 11:21:300532デフォルトの名無しさん
2007/06/16(土) 11:59:210533デフォルトの名無しさん
2007/06/16(土) 12:04:340534デフォルトの名無しさん
2007/06/16(土) 12:58:570535デフォルトの名無しさん
2007/06/16(土) 13:12:570536デフォルトの名無しさん
2007/06/16(土) 13:52:460537デフォルトの名無しさん
2007/06/16(土) 15:34:580538デフォルトの名無しさん
2007/06/16(土) 15:42:380539538
2007/06/16(土) 15:48:030540デフォルトの名無しさん
2007/06/16(土) 16:14:530541デフォルトの名無しさん
2007/06/16(土) 18:08:570542デフォルトの名無しさん
2007/06/16(土) 20:25:110543デフォルトの名無しさん
2007/06/17(日) 02:32:400544デフォルトの名無しさん
2007/06/17(日) 15:57:420545デフォルトの名無しさん
2007/06/17(日) 17:48:000546デフォルトの名無しさん
2007/06/17(日) 19:24:510547デフォルトの名無しさん
2007/06/18(月) 00:10:570548デフォルトの名無しさん
2007/06/18(月) 04:15:150549デフォルトの名無しさん
2007/06/18(月) 14:55:490550デフォルトの名無しさん
2007/06/18(月) 14:57:45* Added aliases string, wstring, and dstring for strings.
* Added .idup property for arrays to create invariant copies.
* Added const, invariant, and final.
* in parameter storage class now means final scope const.
* foreach value variables now default to final if not declared as inout.
* class and struct invariant declarations now must have a ().
Bugs Fixed
* Added missing \n to exception message going to stderr.
* Fixed default struct initialization for CTFE.
* Bugzilla 1226: ICE on a struct literal
0551デフォルトの名無しさん
2007/06/18(月) 14:59:440552デフォルトの名無しさん
2007/06/18(月) 15:09:31>Treat this as an alpha release. Although it passes its test suite, I'm sure there are plenty of bugs remaining. Phobos also has not been thoroughly gone through to put const/final in all the right places.
0553デフォルトの名無しさん
2007/06/18(月) 15:23:420554デフォルトの名無しさん
2007/06/18(月) 18:33:182.0はやいな
0555デフォルトの名無しさん
2007/06/18(月) 18:38:070556デフォルトの名無しさん
2007/06/18(月) 20:23:07//dmd2.000
char[] a = cast(char[])"hello";
const char[] b = "hello";
a[0] = 'H';
writefln(a); // Hello
writefln(b); // Hello <- ?
0557デフォルトの名無しさん
2007/06/18(月) 20:25:270558デフォルトの名無しさん
2007/06/18(月) 20:35:01>a[0] = 'H';
ここでROMを書き換えてるのが原因。Linuxだと落ちるのにWindowsだと落ちないという罠。
0559デフォルトの名無しさん
2007/06/18(月) 20:35:25> modification after casting away const
> No:
char[] a = cast(char[])"hello";
ここでconst(char)[] から char[] にキャストしてるけど、
これを変更するのは undefined behavior
bの型は const(char)[] じゃなくていいんか?
0560デフォルトの名無しさん
2007/06/18(月) 20:37:10http://www.digitalmars.com/d/final-const-invariant.html
Removing Invariant With A Cast のとこ読みナ
0561デフォルトの名無しさん
2007/06/18(月) 20:39:26Linuxだと落ちるのか
いままで、何で書き換え禁止のはずのリテラルを普通に書きかえれるんだよ!
とか思ってたけど
0562556
2007/06/18(月) 20:45:14ずいぶんたくさんのレスついたな
final invariant const を勉強中なんだが なるほど
ROMを書き換えるような処理は基本的に不正ってわけか
0563デフォルトの名無しさん
2007/06/18(月) 21:11:19どう考えてもstringとか中途半端にしか使われなさそうだ。
structはコンストラクタ書けるようになったのか……?
0564デフォルトの名無しさん
2007/06/18(月) 21:16:100565デフォルトの名無しさん
2007/06/18(月) 21:18:240566デフォルトの名無しさん
2007/06/18(月) 21:20:12char[3] になるけどいいのかな?
0567デフォルトの名無しさん
2007/06/18(月) 21:21:57structのコンストラクタはない。
0568デフォルトの名無しさん
2007/06/18(月) 21:43:47const(char)[] b = "hoge"; // string b = "hoge";
の形を一番よく使うからってことかな
あとは
invariant(char)[] a = "hoge";
char[] c = "hoge".dup;
のどちらかになるのかー
0569デフォルトの名無しさん
2007/06/18(月) 21:59:02よう分からん。
0570デフォルトの名無しさん
2007/06/18(月) 22:13:45確か同じ。
0571デフォルトの名無しさん
2007/06/18(月) 22:26:00const(int[]) a = [1];
const int[] b = [1];
const(int)[] c = [1];
a = [2]; // OK
b = [2]; // Error
c = [2]; // OK
a[0] = 2; // Error
b[0] = 2; // Error
c[0] = 2; // Error
a.length = 2; // OK
b.length = 2; // Error
c.length = 2; // OK
}
* aは(変更不可能な配列型)の変数。
* bは変更不可能な(配列型の変数)。
* cは(要素を変更不可能な配列型)の変数。
って理解でいいのかな
0572デフォルトの名無しさん
2007/06/18(月) 22:30:22char[] a = "hello".dup;
string b = a; // ok, char[] から const(char)[] へは暗黙変換される?(1)
b = "HELLO"; // ok
writefln(a); // hello, 変化してないから (1) で deep copy されてる?(2)
writefln(b); // HELLO
0573デフォルトの名無しさん
2007/06/18(月) 22:32:18それであってんじゃね?
うーん 難しいな
こんなにポインタ操作を意識するのは久しぶりだ
0574デフォルトの名無しさん
2007/06/18(月) 23:13:14(1)はたぶんあってる。
> Implicit Conversions
> Mutable and invariant types can be implicitly converted to const.
(2)は違うと思う。
b = "HELLO"; は参照が取り替えられてるだけ。
0575デフォルトの名無しさん
2007/06/18(月) 23:20:12え・・・ほんとだ・・・(2)
言われて見直したらそれだけのことだった orz
正直すまんかった
0576デフォルトの名無しさん
2007/06/18(月) 23:34:201.0の系統は残るの?
0577デフォルトの名無しさん
2007/06/18(月) 23:36:450578デフォルトの名無しさん
2007/06/19(火) 00:07:03来年の正月には3.0になってる??
0579デフォルトの名無しさん
2007/06/19(火) 00:16:120580デフォルトの名無しさん
2007/06/19(火) 00:20:52foreach(const const(char)[]arg;args)
printf("%.*s\n",arg);
}
何が何だかよくわからん
0581デフォルトの名無しさん
2007/06/19(火) 00:28:290582デフォルトの名無しさん
2007/06/19(火) 00:37:44printfにchar[]を渡すときはtoStringzいるんじゃなかったけか
0583デフォルトの名無しさん
2007/06/19(火) 00:41:560584デフォルトの名無しさん
2007/06/19(火) 00:45:070585デフォルトの名無しさん
2007/06/19(火) 00:54:14int main(in char[][] args)
これじゃだめなの?
0586デフォルトの名無しさん
2007/06/19(火) 01:17:500587デフォルトの名無しさん
2007/06/19(火) 01:19:35やばかったらまた 1.0 系に戻すつもりだったりして。
0588デフォルトの名無しさん
2007/06/19(火) 07:18:07これで、いちいちaliasしなくても良くなったな。
0589デフォルトの名無しさん
2007/06/19(火) 08:29:19そこをこうfirst文とかで自動でやってくれたら楽じゃね
いや自分で最初かどうかのbool値とかループカウンタ用意するのもいいけどさ・・・
どうにかなりそうな面倒さだったんでついwww
0590デフォルトの名無しさん
2007/06/19(火) 08:48:27最後は俺も欲しい。
前に話題に出た事あったような気はするんだけど、
結局うやむやに終わったんだっけか?
0591デフォルトの名無しさん
2007/06/19(火) 08:49:090592デフォルトの名無しさん
2007/06/19(火) 14:33:490593デフォルトの名無しさん
2007/06/19(火) 14:53:410594デフォルトの名無しさん
2007/06/19(火) 15:00:56{/*処理の説明*/
処理本編
}
というように括る。
0595デフォルトの名無しさん
2007/06/19(火) 17:18:08for .. finally
とか?
perl には while .. continue 構文があったな。
0596デフォルトの名無しさん
2007/06/19(火) 18:21:22きたねえのう
0597デフォルトの名無しさん
2007/06/19(火) 19:11:47ブロック機能を使え
0598デフォルトの名無しさん
2007/06/19(火) 19:20:47さすがに醜い気がするな
0599デフォルトの名無しさん
2007/06/19(火) 21:47:23Pythonにもwhile-elseとfor-elseがあるな。
0600デフォルトの名無しさん
2007/06/20(水) 07:46:580601デフォルトの名無しさん
2007/06/20(水) 13:51:261.016にもあるよ
0602デフォルトの名無しさん
2007/06/21(木) 02:22:13当然2.000を使いたいのだがライブラリ全滅だし
0603デフォルトの名無しさん
2007/06/21(木) 16:18:150604デフォルトの名無しさん
2007/06/21(木) 16:21:41phobosは使えるけど、それ以外のユーザーが作成したやつは全滅かも。
0605デフォルトの名無しさん
2007/06/21(木) 17:03:23問題は1.x/2.x両方に対応することができるのかってことだよね
1.xが中途半端に生き残ってる限りライブラリ開発が進めにくいのが痛い
0606デフォルトの名無しさん
2007/06/21(木) 17:07:08>>596とかどうやって切り替えればいいんだろうな。
Cみたいなテキストマクロが使えればv2なら括弧だけ補うなんてこともできるんだが。
0607デフォルトの名無しさん
2007/06/21(木) 17:09:192.0系って下位互換をそれほど犠牲にしてまで使いやすい仕様になってるの?
仕様書が見あたらなくてよくわからない・・・
0608デフォルトの名無しさん
2007/06/21(木) 17:12:18アルファだし叩き台の意味もあるんだろうが、
どうせ互換性切るなら構造体リテラルとか連想配列リテラルとかも考え直して欲しい。
0609デフォルトの名無しさん
2007/06/21(木) 17:27:00動的配列も・・・・
0610デフォルトの名無しさん
2007/06/21(木) 19:31:070611デフォルトの名無しさん
2007/06/21(木) 22:24:45>>610
FAQに「Why not in Europe?」とかあるものなw
0612デフォルトの名無しさん
2007/06/21(木) 23:43:57FAQからして日本は眼中にない罠w
つーか おいおい
よく見たらMC++DのAndrei Alexandrescuも発表者として参加するのか
0613デフォルトの名無しさん
2007/06/22(金) 01:10:40出たら何か作ろ!
0614デフォルトの名無しさん
2007/06/22(金) 02:35:44>>549
もっと仕様が定着したら、みたいな意味か?
0615デフォルトの名無しさん
2007/06/22(金) 02:39:070616デフォルトの名無しさん
2007/06/22(金) 10:47:550617デフォルトの名無しさん
2007/06/22(金) 20:11:250618デフォルトの名無しさん
2007/06/22(金) 20:13:150619デフォルトの名無しさん
2007/06/22(金) 22:12:360620デフォルトの名無しさん
2007/06/22(金) 22:40:42New/Changed Features
Added __VENDOR__ and __VERSION__.
Bugs Fixed
std.compiler now is automatically updated.
0621デフォルトの名無しさん
2007/06/22(金) 22:57:360622デフォルトの名無しさん
2007/06/22(金) 23:03:38string s = new string(80);
s[] = 'a';
とか、してたトコは逆に、charにしないといけないのか?>2.0
0623デフォルトの名無しさん
2007/06/22(金) 23:16:14writefln(std.string.join([cast(string)"hoge", hoge(), hoge()], ","));
writefln(std.string.join(["hoge", hoge().idup, hoge().idup], ","));
なんか、びみょー。
0624デフォルトの名無しさん
2007/06/23(土) 01:28:50これってstd.compilerが自動的にアップデートをチェックしてくれるってこと?
0625デフォルトの名無しさん
2007/06/23(土) 01:48:11dmdをアップデートさせたらstd.compilerの内容もアップされるということか
0626デフォルトの名無しさん
2007/06/23(土) 09:43:370627デフォルトの名無しさん
2007/06/23(土) 16:40:00消えてます?
0628デフォルトの名無しさん
2007/06/23(土) 16:51:53消えたね。
Walterタン曰く
>It's not done yet!
0629デフォルトの名無しさん
2007/06/23(土) 17:45:250630デフォルトの名無しさん
2007/06/23(土) 18:23:070631デフォルトの名無しさん
2007/06/23(土) 20:20:36をるちゃんだけでやってると思ってた
0632デフォルトの名無しさん
2007/06/24(日) 03:12:25議論はニュースグループとかでみんなでしてるし
コンパイラもオープンソースだろ
みんな開発に参加しる!
0633デフォルトの名無しさん
2007/06/24(日) 03:39:280634デフォルトの名無しさん
2007/06/24(日) 12:18:01純正も完全なオープンソースにならねぇかな
0635デフォルトの名無しさん
2007/06/24(日) 12:51:08客先とかで絶対に噛む。
0636デフォルトの名無しさん
2007/06/24(日) 13:02:100637デフォルトの名無しさん
2007/06/24(日) 15:00:27まず「プロプラ」って言ってみ。それが言えたら、その嬉しさのままに「言えたり!」って
叫んだら良いよ。これで君も「プロプラ言えたり!」。
0638デフォルトの名無しさん
2007/06/24(日) 16:51:340639デフォルトの名無しさん
2007/06/24(日) 18:17:010640デフォルトの名無しさん
2007/06/24(日) 18:50:250641デフォルトの名無しさん
2007/06/24(日) 20:00:330642デフォルトの名無しさん
2007/06/24(日) 20:12:040643デフォルトの名無しさん
2007/06/24(日) 21:36:38>客先とかで絶対に噛む。
>このスレを見ている人はこんなスレも見ています。(ver 0.20)
>発音を良くするスレ2 [ENGLISH]
0644デフォルトの名無しさん
2007/06/24(日) 22:59:120645デフォルトの名無しさん
2007/06/25(月) 03:15:280646デフォルトの名無しさん
2007/06/25(月) 11:08:350647デフォルトの名無しさん
2007/06/25(月) 12:07:37ライブラリとかまわりと協調する気
ゼロの気がするんだが気のせいか
0648デフォルトの名無しさん
2007/06/25(月) 12:15:48そこら辺を意識して負の遺産が山積みの言語にするのは
Walterタンが D に求めているものではないだろう。
0649デフォルトの名無しさん
2007/06/25(月) 12:23:170650デフォルトの名無しさん
2007/06/25(月) 12:23:460651デフォルトの名無しさん
2007/06/25(月) 12:24:59それまでは実用できないってのは、今までで証明されている。
0652デフォルトの名無しさん
2007/06/25(月) 12:25:450653デフォルトの名無しさん
2007/06/25(月) 12:44:05もうなにがなんだかよくわからナス
どうせ「完成宣言」も永遠にしないんだろ
0654デフォルトの名無しさん
2007/06/25(月) 13:34:570655デフォルトの名無しさん
2007/06/25(月) 14:25:25こいつは永遠の実験言語だってば
0656デフォルトの名無しさん
2007/06/25(月) 14:29:580657デフォルトの名無しさん
2007/06/25(月) 14:33:15しかし砂上の楼閣じゃ使い物にならない罠
なんかタチの悪い社会主義みたいだw
さすがに8年経とうとしてるし
Dが世の中に受け容れられるかどうかはこのへんが正念場だと思う
カンファレンスで今後のビジョンも示されるらしいから期待して待つよ
0658デフォルトの名無しさん
2007/06/25(月) 15:24:050659デフォルトの名無しさん
2007/06/25(月) 16:37:090660デフォルトの名無しさん
2007/06/25(月) 17:21:02飛鳥配列を思い出す
0661デフォルトの名無しさん
2007/06/25(月) 17:32:09永久革命ってやつだね
政治でやられると確かにメチャメチャタチ悪いw
でもプログラム言語だけのことならこんなのも世の中に一つぐらいはあってよさそうな気もしてきたw
0662デフォルトの名無しさん
2007/06/25(月) 18:30:09今の段階だと分けるにしても使用者層が少なすぎるし
リリース版だからといって人に勧められるほど安定化してるわけでもないと思う
2.x系がベータという位置づけなのかもしれないけど
>>661
ユーザーとしては困るw
カンファレンスがシアトルで開催ってのは企業等へのアピールという
思惑もあるだろうからサポート企業が出てきてくれることに期待
個人的にはWolframタンとかも呼んでホスィw
0663デフォルトの名無しさん
2007/06/25(月) 18:43:462.xで何か作ることを考えるのは早すぎる
やるなら1.xにしなされ
0664デフォルトの名無しさん
2007/06/26(火) 16:30:54Digital Mars社のTシャツにマックスウェル方程式柄があるんだが
ありゃDigital Marsとなんか関係あるのか?w
0665デフォルトの名無しさん
2007/06/26(火) 18:05:30>マクスウェル方程式柄
ttp://www.t-shirtshopper.com/cgi-bin/show_item.cgi?site=two_barking_dogs&url=http://www.twobarkingdogs.com/images/Zoom/tbd_6F.jpg
↑を思い出した
0666デフォルトの名無しさん
2007/06/26(火) 19:37:14そういえば、物理屋に言わせればマクスウェル方程式ってスゲー美しいらしいが
アインシュタインも理想としたと聞く
0667デフォルトの名無しさん
2007/06/26(火) 19:48:220668デフォルトの名無しさん
2007/06/26(火) 19:52:05四元ベクトル形式じゃないと分かんないよ。
0669デフォルトの名無しさん
2007/06/26(火) 20:02:04たんにクールだろってことだと思うけどなw
>>668
「四元ベクトル形式」っていう言葉ははじめて聞いた気がするけど
テンソル形式のことだよね?
特殊相対論までならそれでもいいんでない?
と思いはするけどたしかに共変形で書いて欲しかった気もするw
0670デフォルトの名無しさん
2007/06/27(水) 10:44:20A *getthis() {
return( &this );
}
};
int main()
{
auto a= new A();
printf( "%p %p", a.getthis(), &a);
}
thisのアドレスとインスタンスのアドレスが違うのは、なんでだろう
クラス内でインスタンスのアドレスはとれないもんかな
0671デフォルトの名無しさん
2007/06/27(水) 10:54:010672デフォルトの名無しさん
2007/06/27(水) 11:01:300673デフォルトの名無しさん
2007/06/27(水) 11:07:40違う理由はなんとなくわかったんですが、
インスタンスのアドレスとれないでしょうか
そのアドレスもGCでかわる可能性があるんでしょうか
0674デフォルトの名無しさん
2007/06/27(水) 11:10:40使い道がよく分からないんだけど。
0675デフォルトの名無しさん
2007/06/27(水) 11:27:46class A{
void *getthis(){
return cast(void*)this;
}
}
void main(){
auto a= new A();
printf( "%p %p", a.getthis(), cast(void*)a);
}
0676デフォルトの名無しさん
2007/06/27(水) 11:51:58あ、なるほど・・ありがとうございます
0677デフォルトの名無しさん
2007/06/27(水) 19:11:210678デフォルトの名無しさん
2007/06/27(水) 21:09:08変数を使った .init プロパティは、
その初期化に使った値ではなく、
その型に対して使った場合と同じ値
(変数を初期化しなかった場合に入れられる値)になりました。
0679デフォルトの名無しさん
2007/06/27(水) 21:13:48かなり書き直しいるなあ
0680デフォルトの名無しさん
2007/06/27(水) 21:23:50なんだってまた今更こんな変更が・・・w
ちなみになんかホームページすごい見にくい気がする
コンパイラ履歴のolder versionsからのリンク先が
1.0までで終わっているのはなんで?
0681デフォルトの名無しさん
2007/06/27(水) 21:28:55俺は Mac だから�_。
0682677
2007/06/27(水) 21:29:55自分を信じたくなかた・・・テラヒドス
>>680
1.0系と2.0系で別のページになっている
上のほうに切り替え用のリンクがあったはず
1.0系のchange logにはもっと古いバージョンのも書いてあるよ
0683デフォルトの名無しさん
2007/06/27(水) 21:31:29この変更には納得できる。
0684デフォルトの名無しさん
2007/06/27(水) 21:39:55漏れも信じたくなかったw
んで別のページになっているのはわかるんだけど
例えば2.0系のコンパイラのページで
上のolder versionsの最新がD 1.00で止まってるのは
なんか使いにくいなと思ったもので・・・
この場合だと1.00以降のログが表示されないとまずくない?
>>683
そっか 漏れはゲームつくるときに初期値化すぐできて便利だなー
とか思っていたんだが・・・orz
0685デフォルトの名無しさん
2007/06/27(水) 21:46:170686デフォルトの名無しさん
2007/06/28(木) 06:29:260687デフォルトの名無しさん
2007/06/28(木) 06:37:53とかやってる型の初期値とるときは有用なんじゃね
0688デフォルトの名無しさん
2007/06/28(木) 07:20:230689デフォルトの名無しさん
2007/06/28(木) 07:55:24それ知らんかったわ。
さすがウォルターたんだ
0690デフォルトの名無しさん
2007/06/28(木) 08:46:26すげーや。
0691デフォルトの名無しさん
2007/06/28(木) 10:22:110692デフォルトの名無しさん
2007/06/28(木) 10:46:24* Added D_Version2 predefined identifier to indicate this is a D version 2.0 compiler
* Added __VENDOR__ and __VERSION__.
* Now an error to use both const and invariant as storage classes for the same declaration
* The .init property for a variable is now based on its type, not its initializer.
0693デフォルトの名無しさん
2007/06/28(木) 10:47:47* std.compiler now is automatically updated.
* Fixed problem catting mutable to invariant arrays.
* Fixed CFTE bug with e++ and e--.
* Bugzilla 1254: Using a parameter initialized to void in a compile-time evaluated function doesn't work
* Bugzilla 1256: "with" statement with symbol
* Bugzilla 1259: Inline build triggers an illegal error msg "Error: S() is not an lvalue"
* Bugzilla 1260: Another tuple bug
* Bugzilla 1261: Regression from overzealous error message
* Bugzilla 1262: Local variable of struct type initialized by literal resets when compared to .init
* Bugzilla 1263: Template function overload fails when overloading on both template and non-template class
* Bugzilla 1268: Struct literals try to initialize static arrays of non-static structs incorrectly
* Bugzilla 1269: Compiler crash on assigning to an element of a void-initialized array in CTFE
* Bugzilla 1270: -inline produces an ICE
* Bugzilla 1272: problems with the new 1.0 section
* Bugzilla 1274: 2.0 beta link points to dmd.zip which is the 1.x chain
* Bugzilla 1275: ambiguity with 'in' meaning
* Bugzilla 1276: static assert message displayed with escaped characters
* Bugzilla 1277: "in final const scope" not considered redundant storage classes
* Bugzilla 1279: const/invariant functions don't accept const/invariant return types
* Bugzilla 1280: std.socket.Socket.send (void[],SocketFlags) should take a const(void)[] instead
* Bugzilla 1283: writefln: formatter applies to following variable
* Bugzilla 1286: crash on invariant struct member function referencing globals
0694デフォルトの名無しさん
2007/06/28(木) 11:52:49int a = 10;
a = 20;
printf("%d %d %d",a, a.init, int.init); // 20 0 0
}
なんで a.init == ini.init に変えちゃったんだろう
0695デフォルトの名無しさん
2007/06/28(木) 12:06:38DJcodeを2.001に対応させときましたノシ
0696デフォルトの名無しさん
2007/06/28(木) 13:40:40お世話になったことは無い身ですが、
メソッド名はDのスタイルガイドに従ってlowerCamelにしませんか。
0697デフォルトの名無しさん
2007/06/28(木) 14:00:08なんで先頭文字だけ大文字にしないのかしら?
先頭ですよってわかりやすいから?
0698デフォルトの名無しさん
2007/06/28(木) 14:17:540699デフォルトの名無しさん
2007/06/28(木) 14:57:450700デフォルトの名無しさん
2007/06/28(木) 18:53:22695じゃないけど気になった。
0701デフォルトの名無しさん
2007/06/28(木) 19:07:400702デフォルトの名無しさん
2007/06/28(木) 19:10:38主語->動詞の動詞が大文字になっちゃって違和感があるんじゃなかろーか。
0703デフォルトの名無しさん
2007/06/28(木) 19:11:580704デフォルトの名無しさん
2007/06/28(木) 19:12:450705デフォルトの名無しさん
2007/06/28(木) 19:12:500706デフォルトの名無しさん
2007/06/28(木) 19:13:420707デフォルトの名無しさん
2007/06/28(木) 19:14:320708デフォルトの名無しさん
2007/06/28(木) 19:14:58EucString toEuc(char[] utf8_string);
とかが綺麗そうだけどな。
0709デフォルトの名無しさん
2007/06/28(木) 19:23:34char[] toUtf8(EucString euc_string);
を用意しても、EucString型オブジェクトのプロパティっぽくは使えないんだな…
0710デフォルトの名無しさん
2007/06/28(木) 19:32:03Dの場合 method(Type[] arg) が arg.method() とも書ける仕様があるけど、
動詞で始めた場合、結局 arg.method() と書かないと不自然になっちゃうのね。
0711デフォルトの名無しさん
2007/06/28(木) 19:33:140712デフォルトの名無しさん
2007/06/28(木) 19:34:080713デフォルトの名無しさん
2007/06/28(木) 19:46:08俺は、それっぽければいいと思ってるので、英語の文法にはあまりこだわらないな。
0714デフォルトの名無しさん
2007/06/28(木) 19:49:180715デフォルトの名無しさん
2007/06/28(木) 20:27:320716デフォルトの名無しさん
2007/06/28(木) 21:23:41culcSin(double)
0717デフォルトの名無しさん
2007/06/28(木) 21:28:430718デフォルトの名無しさん
2007/06/28(木) 21:31:160719デフォルトの名無しさん
2007/06/28(木) 21:33:18Jes. 下四つとも一緒になるし。
int hogeo, fugeo;
c^uHavas(hogeo, fugeon);
c^uHavas(fugeon, hogeo);
hogeo.c^uHavas(fugeon);
fugeon.c^uHavas(hogeo);
0720デフォルトの名無しさん
2007/06/28(木) 21:35:510721デフォルトの名無しさん
2007/06/28(木) 21:36:31キモいw
0722デフォルトの名無しさん
2007/06/28(木) 21:48:340723デフォルトの名無しさん
2007/06/28(木) 22:04:08予約語もaliasすれば大丈夫。
alias real 実数;
実数 正弦(実数 角度);
0724デフォルトの名無しさん
2007/06/28(木) 22:04:28alias char[] 文字列
文字列 フルパスからファイル名だけを取得する(文字列 フルパス)
でいいじゃん。
0725デフォルトの名無しさん
2007/06/28(木) 22:11:02class 固定小数点数 { ... }
文字列 = 小数.を文字列に変換();
小数.の整数部 = 整数;
とか。
0726デフォルトの名無しさん
2007/06/28(木) 22:13:020727デフォルトの名無しさん
2007/06/28(木) 22:31:550728デフォルトの名無しさん
2007/06/28(木) 23:03:46なんかネタでそういうの組んで見たくなったwwwww
0729デフォルトの名無しさん
2007/06/28(木) 23:08:480730デフォルトの名無しさん
2007/06/28(木) 23:14:05組み合わせろ把握
0731デフォルトの名無しさん
2007/06/29(金) 00:02:23wwww
伏線上手すぎるだろ。
なんだこの少年漫画ばりの盛り上げ方は。
0732デフォルトの名無しさん
2007/06/29(金) 00:56:46ifelse.d:1: invalid UTF-8 sequence
ifelse.d:1: unsupported char 0x81
とかボロボロエラーが出るんだけど、俺だけ?
0733デフォルトの名無しさん
2007/06/29(金) 01:01:490734デフォルトの名無しさん
2007/06/29(金) 01:05:57環境は MacOSX GDC 0.23 (D 1.007)
例えば 「もし」 とか定義しようとするとあかん。
0735デフォルトの名無しさん
2007/06/29(金) 01:09:110736デフォルトの名無しさん
2007/06/29(金) 01:11:360737デフォルトの名無しさん
2007/06/29(金) 01:27:56ttp://ranobe.com/up/src/up197596.zip
0738デフォルトの名無しさん
2007/06/29(金) 01:37:37http://www.kmonos.net/alang/d/lex.html
> ソースファイルが BOM で始まらない場合は、
> 最初の2文字は必ず U0000007F 以下でなければなりません。
にひっかかってるとか?
0739デフォルトの名無しさん
2007/06/29(金) 01:39:56とりあえずソースは >>737 にある。
Windows だと大丈夫なのかな?
0740デフォルトの名無しさん
2007/06/29(金) 01:49:001.014
0741デフォルトの名無しさん
2007/06/29(金) 01:50:340742デフォルトの名無しさん
2007/06/29(金) 01:51:25@Win2k, dmd1.015
0743デフォルトの名無しさん
2007/06/29(金) 01:53:46まあ、Mac だとそれ以外でもエラーになるけど。
0744デフォルトの名無しさん
2007/06/29(金) 01:56:52条件文を日本語っぽく書けるようにするテスト。
ttp://ranobe.com/up/src/up197598.zip
0745デフォルトの名無しさん
2007/06/29(金) 07:10:41うっはwwなでしこwww
0746デフォルトの名無しさん
2007/06/29(金) 10:01:00メジャーな言語はだいたい通る。
西欧語(ローマ字、キリル文字、ギリシャ文字)は特に問題なし。
日本語や中国語は約物が通らない。
アラビア語は母音記号やシャッダ、スクーンが入るとNG。
Vistaだと自動的に右から左に書く書式に直されるので、使いづらい。
インド諸語や記号類はだめだったなあ。
シグマはいけたが、ルートはだめ。
個人的にはギリシャ文字が通るのは結構有難いな。
0747デフォルトの名無しさん
2007/06/29(金) 10:58:090748デフォルトの名無しさん
2007/06/29(金) 11:21:260749デフォルトの名無しさん
2007/06/29(金) 11:23:420750デフォルトの名無しさん
2007/06/29(金) 17:20:19ttp://www.algonet.se/~afb/d/universalalphas/
ttp://www.digitalmars.com/pnews/read.php?server=news.digitalmars.com&group=digitalmars.D.learn&artnum=3458
↑の回答から誘導された
0751デフォルトの名無しさん
2007/06/29(金) 17:24:24ISO/IEC 9899:1999 (E)って書いてある訳だが?
0752デフォルトの名無しさん
2007/06/29(金) 17:27:38すんませんした
0753デフォルトの名無しさん
2007/06/29(金) 22:39:20C のライブラリがそのまま使えて、C++ よりコンパイル速度が速いらしいというのは良いね。
0754デフォルトの名無しさん
2007/06/29(金) 22:41:340755デフォルトの名無しさん
2007/06/30(土) 02:23:200756デフォルトの名無しさん
2007/06/30(土) 08:53:080757デフォルトの名無しさん
2007/06/30(土) 09:09:210758デフォルトの名無しさん
2007/06/30(土) 09:43:55> i = a[5,6,7]; // i = a.opIndex(5,6,7); と同じ
> a[i,3] = 7; // a.opIndexAssign(7,i,3); と同じ
とか
0759デフォルトの名無しさん
2007/06/30(土) 11:22:440760デフォルトの名無しさん
2007/06/30(土) 20:19:110761デフォルトの名無しさん
2007/06/30(土) 21:17:340762デフォルトの名無しさん
2007/06/30(土) 21:29:460763デフォルトの名無しさん
2007/06/30(土) 21:30:060764デフォルトの名無しさん
2007/06/30(土) 21:37:500765デフォルトの名無しさん
2007/06/30(土) 21:53:240766デフォルトの名無しさん
2007/06/30(土) 21:55:420767デフォルトの名無しさん
2007/06/30(土) 22:27:170768デフォルトの名無しさん
2007/06/30(土) 22:27:530769デフォルトの名無しさん
2007/07/01(日) 01:26:230770デフォルトの名無しさん
2007/07/01(日) 01:28:310771デフォルトの名無しさん
2007/07/01(日) 03:45:290772デフォルトの名無しさん
2007/07/01(日) 03:55:550773デフォルトの名無しさん
2007/07/01(日) 05:31:540774デフォルトの名無しさん
2007/07/01(日) 07:39:32どちらもC系で微妙に似ているから逆に違和感がある
0775デフォルトの名無しさん
2007/07/01(日) 07:43:54まあ、標準ライブラリの恩恵とかはあるかも
0776デフォルトの名無しさん
2007/07/01(日) 09:32:40インタプリタで1つ、
IL で1つ、の合計3種類あれば十分だな。
ついでに、それぞれ手続き型、関数型、論理型の3種類で、
合計9個の言語があればいい。
0777デフォルトの名無しさん
2007/07/01(日) 09:57:40手続き型を単純にしたのが関数型だから関数型イラネ。
0778デフォルトの名無しさん
2007/07/01(日) 13:52:27それできるの?
a[5][6][7]
とかがいいんだけど
0779デフォルトの名無しさん
2007/07/01(日) 13:58:43struct S{
struct S1 {
struct S2 {
int i, j;
int opIndex(int k) { return i * j + k; }
}
int i;
S2 opIndex(int j) { return S2(i, j); }
}
S1 opIndex(int i) { return S1(i); }
}
void main() {
writefln(S()[2][5][3]);
}
0780デフォルトの名無しさん
2007/07/01(日) 14:02:33できるよ。
0781デフォルトの名無しさん
2007/07/01(日) 14:31:41???
0782777
2007/07/01(日) 16:07:520783デフォルトの名無しさん
2007/07/01(日) 16:10:120784デフォルトの名無しさん
2007/07/01(日) 16:13:22人間がまだ居たのには驚いたけど、D言語とは全く関係無いしスルーの方向で。
0785デフォルトの名無しさん
2007/07/01(日) 16:17:010786デフォルトの名無しさん
2007/07/01(日) 16:19:100787デフォルトの名無しさん
2007/07/01(日) 16:20:58?
http://ja.wikipedia.org/wiki/%E9%AB%98%E9%9A%8E%E9%96%A2%E6%95%B0#.E6.89.8B.E7.B6.9A.E3.81.8D.E5.9E.8B.E8.A8.80.E8.AA.9E.E3.81.AB.E3.81.8A.E3.81.91.E3.82.8B.E9.AB.98.E9.9A.8E.E9.96.A2.E6.95.B0
0788デフォルトの名無しさん
2007/07/01(日) 16:22:44>一方、#関数を戻り値とする関数を書くことは難しい。 これは戻り値となる関数の実行時にその関数を定義した時点での環境が必要になる(クロージャ)ためである。
0789デフォルトの名無しさん
2007/07/01(日) 16:25:31数学的な意味での関数(写像)を実際に実現できてる
関数のみで構成されてるのが関数型言語って理解でおk?
0790デフォルトの名無しさん
2007/07/01(日) 16:26:290791デフォルトの名無しさん
2007/07/01(日) 16:28:260792デフォルトの名無しさん
2007/07/01(日) 16:29:12碌な事が無い
0793デフォルトの名無しさん
2007/07/01(日) 16:30:08クロージャの実装なんて簡単だろ、常考。スタックの代わりをヒープから確保してespをずらすだけっしょ?
ただ最適化の面から属性で有効にするようにする必要はあるけど。
0794デフォルトの名無しさん
2007/07/01(日) 16:33:01まあ、何にせよ最初の↑は無いよな…
0795デフォルトの名無しさん
2007/07/01(日) 16:33:11言語的にサポートされてない時点で無理がある。
0796デフォルトの名無しさん
2007/07/01(日) 16:35:29どこまでやってもらえるかって話に思えるが
その仕様の違いで手続き型と関数型というように分類してるってこと?
結局はどんなプログラミング言語でも他のプログラミング言語の
動きをエミュしようと思えばできるんだろ
手間がどんだけかかるかの問題であって
0797デフォルトの名無しさん
2007/07/01(日) 16:40:45基本的にはそうかな。
基本的には引数と戻り値があるべきとしてるし、
基本的には同じ引数から同じ値を返すべきとしてるからな。
関数型は。
まあ、そこまで完全にやってる言語は少ないけど。
0798デフォルトの名無しさん
2007/07/01(日) 16:42:08lazy
0799デフォルトの名無しさん
2007/07/01(日) 16:42:25プログラムの組み方の思想レベルでも違いはあるんだけど、
そう思っても大きな間違いはないと思う。
0800デフォルトの名無しさん
2007/07/01(日) 16:43:12あとは関数を動的に作って返せるようになれば
関数型を名乗っていいと思う。
0801デフォルトの名無しさん
2007/07/01(日) 16:57:29それはただのdelegateだしょ
0802デフォルトの名無しさん
2007/07/01(日) 16:59:42よくわからんのだけど、デリゲート返すだけじゃあかんの?
0803デフォルトの名無しさん
2007/07/01(日) 17:13:24delegate内で使う親関数の変数をヒープに取れば同じ…かな?
0804デフォルトの名無しさん
2007/07/01(日) 17:26:56何で D はクロージャを入れなかったんだろう
0805デフォルトの名無しさん
2007/07/01(日) 17:32:44そういうの気にせずにクロージャっぽくつかってたんだが、ダメだったのか・・・?
0806デフォルトの名無しさん
2007/07/01(日) 17:32:540807デフォルトの名無しさん
2007/07/01(日) 17:42:10やめて欲しいな。
0808デフォルトの名無しさん
2007/07/01(日) 17:51:36const(メンバを変更しない)なメンバ関数って作れないの?
class A{
// conflicting storage class const
final const int func(){ return 1; }
}
int main(in string[] args){
auto a = new A;
return 0;
}
0809デフォルトの名無しさん
2007/07/01(日) 17:55:12それ意味が違うから
0810デフォルトの名無しさん
2007/07/01(日) 17:59:432.001?
俺はまだDMD2.000のままだけど、エラーでない。
http://d.puremagic.com/issues/show_bug.cgi?id=1277
これ直すときにエンバグしたんじゃないかね。
0811デフォルトの名無しさん
2007/07/01(日) 18:03:47class A{
final: const int func(){ return 1; }
}
とすると通るから、バグだろうな
0812デフォルトの名無しさん
2007/07/01(日) 18:07:07いつも思うんだけどこういうのって系統的なチェックの方法とか
ノウハウってないの?
0813デフォルトの名無しさん
2007/07/01(日) 18:08:060814808
2007/07/01(日) 18:10:35やっぱまだ2.0ははやいか……
0815デフォルトの名無しさん
2007/07/01(日) 18:17:50どゆこと?
0816デフォルトの名無しさん
2007/07/01(日) 18:18:20float[3] pos;
};
Vertex a= {
pos:[0.0f, 10.5f, 10.5f]
};
うう・・イニシャライズできない・・・
0817デフォルトの名無しさん
2007/07/01(日) 18:19:56サンクス Linuxしかないのか
チェックエラーでまくりワロタ
Walterタンはこれを使っているのかな?
>>814
報告よろ
0818デフォルトの名無しさん
2007/07/01(日) 18:20:040819デフォルトの名無しさん
2007/07/01(日) 18:20:16試してないけど
Vertex a=Vertex([0.0f, 10.5f, 10.5f]);は?
0820デフォルトの名無しさん
2007/07/01(日) 18:20:540821デフォルトの名無しさん
2007/07/01(日) 18:21:00Walterタンはこれとは別に持ってたと思う。
0824デフォルトの名無しさん
2007/07/01(日) 18:55:20うまく行ったかしらんが、bugzilla投げといた。
0826デフォルトの名無しさん
2007/07/02(月) 06:53:070827デフォルトの名無しさん
2007/07/02(月) 07:09:090828デフォルトの名無しさん
2007/07/02(月) 07:13:31New/Changed Features
* Renamed linux library from libphobos.a to libphobos2.a
D 1.018 はバグフィックスのみ。
0829デフォルトの名無しさん
2007/07/02(月) 07:14:31共通部分のみの修正か。
0830デフォルトの名無しさん
2007/07/02(月) 08:35:41そう思うとちょっとさみしい
絶対そうじゃないけどなw
0831デフォルトの名無しさん
2007/07/02(月) 12:01:44struct Foo {
int f;
}
void add( ref final scope const Foo a)
{
logprint( &a );
}
Foo foo;
add( foo);
コンパイラが落ちます
ところで構造体の参照渡しで、
その引数の変更の無いときの修飾子はどうしてますか?
void add( ref in Foo a) なんてあってもいいような
0832デフォルトの名無しさん
2007/07/02(月) 13:43:130833デフォルトの名無しさん
2007/07/02(月) 16:15:17コンパイラが落ちなきゃいいだけだよな
0834デフォルトの名無しさん
2007/07/02(月) 16:45:36incompatible parameter storage classes
やってみたが、仕様としてゆるしてないみたい
0835デフォルトの名無しさん
2007/07/02(月) 17:17:410836デフォルトの名無しさん
2007/07/02(月) 17:46:300837デフォルトの名無しさん
2007/07/03(火) 01:01:170838デフォルトの名無しさん
2007/07/03(火) 12:38:070839デフォルトの名無しさん
2007/07/03(火) 13:03:38昨日やろうとしたのですがちょっと怖くなって・・
0840デフォルトの名無しさん
2007/07/03(火) 15:11:530841デフォルトの名無しさん
2007/07/03(火) 15:46:37For dynamic array and object parameters, which are passed by reference, in/out/ref apply only to the reference and not the contents.
とドキュメントにあるんだが、void add( ref in Foo a)って必要なん?
void add(in Foo a)でfinal scope constな参照渡しなわけだし。
0842デフォルトの名無しさん
2007/07/03(火) 15:48:58ポインタ渡しでinを指定か?
0843デフォルトの名無しさん
2007/07/03(火) 16:33:58構造体は呼び出し側に変更を加える必要がない場合、普通に値渡しすればいい。
可能な場合、コンパイラが参照渡しに最適化する。
0844デフォルトの名無しさん
2007/07/04(水) 11:05:150845844
2007/07/04(水) 11:11:53スコープ外へのコピーはエラーにして欲しいな
0846デフォルトの名無しさん
2007/07/04(水) 11:45:510847デフォルトの名無しさん
2007/07/04(水) 12:01:06バグの素にしかならないと思うんだけど、どうよ?
class C { void func(){ } }
void main() {
C a;
{
scope C b = new C;
a = b;
}
if(a !is null) a.func(); // Error: Access Violation
}
0848デフォルトの名無しさん
2007/07/04(水) 12:40:01たしかに、それはちょっとおかしい
0849デフォルトの名無しさん
2007/07/04(水) 13:40:11それがバグのバグたる所以ですよ
0850デフォルトの名無しさん
2007/07/04(水) 14:04:190851デフォルトの名無しさん
2007/07/04(水) 14:35:47void f(scope C d) {
c = d;
}
こんなこともできるわけだが、これはバグだよな?
0852デフォルトの名無しさん
2007/07/04(水) 14:43:390853デフォルトの名無しさん
2007/07/04(水) 14:49:590854デフォルトの名無しさん
2007/07/04(水) 14:57:17>int[] g;
>
>void foo(in int[] a)
>{
> a = [1,2]; // error, a is final
> a[1] = 2; // error, a is const
> g = a; // error, a is scope
>}
>
>引数でこれらの操作のどれかをしたいのなら、"in"を使用しないでください。"in"を使うことはD 1.0のコードでは特に意味は無いので、それは後方互換になるはずです。
って書いてあるから、もろバグじゃないかな。
0855デフォルトの名無しさん
2007/07/04(水) 23:21:320856デフォルトの名無しさん
2007/07/04(水) 23:26:100857デフォルトの名無しさん
2007/07/05(木) 00:05:020858デフォルトの名無しさん
2007/07/05(木) 00:12:030859デフォルトの名無しさん
2007/07/05(木) 00:21:250860デフォルトの名無しさん
2007/07/05(木) 02:03:40static if(is(pint X == X*) ){
pragma(msg, X.stringof);
}
これでintってなるなら、
alias const(int) cint;
static if(is(cint X == const(X)) ){
pragma(msg, X.stringof);
}
これとか、
alias const(int*) cpint;
static if(is(cpint X == const(X*)) ){
pragma(msg, X.stringof);
}
これもintになるべきじゃないか?って思うんだけどどう思う?
0861デフォルトの名無しさん
2007/07/05(木) 02:10:23なるべき。
0862デフォルトの名無しさん
2007/07/05(木) 02:17:31pragma(msg, X.stringof); // int
}
const()は完全に無視されているようだな。
0863デフォルトの名無しさん
2007/07/05(木) 04:00:00ttp://ranobe.com/up/src/up198768.zip
0864デフォルトの名無しさん
2007/07/05(木) 04:43:250865デフォルトの名無しさん
2007/07/05(木) 06:33:540866デフォルトの名無しさん
2007/07/05(木) 07:26:270867デフォルトの名無しさん
2007/07/05(木) 07:28:08さっきうpだてしたばっかなのに
0868デフォルトの名無しさん
2007/07/05(木) 07:49:260869デフォルトの名無しさん
2007/07/05(木) 07:49:57いいなそれ^^
0870デフォルトの名無しさん
2007/07/05(木) 07:51:090871デフォルトの名無しさん
2007/07/05(木) 07:53:170872デフォルトの名無しさん
2007/07/05(木) 07:53:580873デフォルトの名無しさん
2007/07/05(木) 09:04:310874デフォルトの名無しさん
2007/07/05(木) 13:52:58Jul 1, 2007
New/Changed Features
* Added 0x78 Codeview extension for type dchar.
Codeview extension...?
なんだそりゃ?
0875デフォルトの名無しさん
2007/07/05(木) 14:05:320876デフォルトの名無しさん
2007/07/05(木) 14:08:19dcharの型情報をCodeview形式で埋め込むようにしといたとか、
そういう感じの話じゃね、たぶん。
0877デフォルトの名無しさん
2007/07/05(木) 14:14:59● ● <ちょっとびっくり機能>
● ●
● ● 全体をコピペすると、
● ● 使用中のWindowsの
● ● バージョンが表示される。
● ●
● ●
Microsoft Windows 95 OSR2
● ●
● ● (板によって非対応の場合あり)
● ●
● ●
● ●
● ●
● ●
● ●
0878デフォルトの名無しさん
2007/07/05(木) 19:56:340879デフォルトの名無しさん
2007/07/05(木) 20:11:460880デフォルトの名無しさん
2007/07/05(木) 20:51:540881デフォルトの名無しさん
2007/07/05(木) 21:26:20● ● <ちょっとびっくり機能>
● ●
● ● 全体をコピペすると、
● ● 使用中のWindowsの
● ● バージョンが表示される。
● ●
● ●
Microsoft Windows 95 OSR2
● ●
● ● (板によって非対応の場合あり)
● ●
● ●
● ●
● ●
● ●
● ●
0882デフォルトの名無しさん
2007/07/06(金) 22:11:46dmd2.002
C:\...\dmd\src\phobos\std\bind.d(837): declaration _D3std4bind9EmptySlot6__initZ forward declaration
import std.bind, std.stdio;
void foo(int a, int b) {
writefln(a,"*",b,"=",a*b);
}
void main() {
foo(10, 5);
bind(&foo, 10, 5)();
bindAlias!(foo, 10, 5)();
}
0883デフォルトの名無しさん
2007/07/06(金) 22:23:350884デフォルトの名無しさん
2007/07/06(金) 23:23:14でも bindAlias をコメントアウトしてもエラーは変わらないような
0885デフォルトの名無しさん
2007/07/07(土) 23:11:360886デフォルトの名無しさん
2007/07/08(日) 13:08:350887デフォルトの名無しさん
2007/07/08(日) 16:40:07具体的にはどんなふうになるの?
0888デフォルトの名無しさん
2007/07/08(日) 16:42:51void func(int[] a) { writefln(a.length); }
void main() {
int[] a = [0, 1, 2];
a.func; // Error: no property 'func' for type 'int[]'
}
0889デフォルトの名無しさん
2007/07/08(日) 17:08:34そういえばこれじゃあプロパティ風じゃないな。
0890デフォルトの名無しさん
2007/07/08(日) 17:44:28前からそうだっけ?
0891デフォルトの名無しさん
2007/07/08(日) 19:34:49しかしこれが仕様とも思えないような・・・
0892デフォルトの名無しさん
2007/07/08(日) 20:47:220893デフォルトの名無しさん
2007/07/08(日) 22:55:450894デフォルトの名無しさん
2007/07/09(月) 12:15:47普通に仕様かと思ってたけど違うのかな
0895デフォルトの名無しさん
2007/07/09(月) 12:17:390896デフォルトの名無しさん
2007/07/09(月) 16:35:07そう考えるとなんでこういう仕様になっているのか俺にはわからない
0897デフォルトの名無しさん
2007/07/09(月) 16:39:22普通のメンバメソッドなら括弧いらないのに、プロパティ風呼び出しだと括弧ないとエラーになるのは一貫性に欠ける気がする。
0898デフォルトの名無しさん
2007/07/09(月) 17:12:490899デフォルトの名無しさん
2007/07/09(月) 17:26:41配列.関数風()の解釈に曖昧さがないということだとは思うが。
length(int [] hoge) {}
int[] foo;
foo.length;
は目も当てられんだろ。
0900デフォルトの名無しさん
2007/07/09(月) 17:30:200901デフォルトの名無しさん
2007/07/09(月) 18:17:300902デフォルトの名無しさん
2007/07/09(月) 18:23:22せめて.sizeと.length()だけならいいのに。
0903デフォルトの名無しさん
2007/07/09(月) 20:55:37他にいい解決策はないものか・・・・
プロパティですよってわかる記号を付けるとか・・・・
それも変か
0904デフォルトの名無しさん
2007/07/09(月) 21:30:18lengthとかのプロパティに使ってる名前の関数なんていらんだろ
プロパティとわかる記号ってfoo@initにしちゃうとか?
うーん
0905デフォルトの名無しさん
2007/07/09(月) 21:42:330906904
2007/07/09(月) 21:45:36やっぱり括弧なしでも呼べるようにして
あいまいだったらエラーにするのがいいと思う
0907デフォルトの名無しさん
2007/07/09(月) 22:03:220908デフォルトの名無しさん
2007/07/09(月) 22:17:46同じ構文にしてよと言おうと思ったが英語に挫折したw
むりぽ
0909デフォルトの名無しさん
2007/07/09(月) 22:19:260910デフォルトの名無しさん
2007/07/09(月) 22:20:120911デフォルトの名無しさん
2007/07/09(月) 23:35:27a.length(3)とかでプロパティを呼び出すことになるの?
そうしたら>>899のlengthを同じく2つ引数のある関数で定義しなおすと
結局は名前衝突が起こる?
0912デフォルトの名無しさん
2007/07/09(月) 23:41:01オーバーロードとオーバーライド間違えてないか?
0913デフォルトの名無しさん
2007/07/09(月) 23:45:50オーバーロードか
0914デフォルトの名無しさん
2007/07/09(月) 23:46:260915デフォルトの名無しさん
2007/07/10(火) 05:25:04()なんてコードアシストが使えるようになればレンチン状態で入力できるし。
0916デフォルトの名無しさん
2007/07/10(火) 11:59:240917デフォルトの名無しさん
2007/07/10(火) 17:04:20呼び出せるのが利点だから、配列についてプロパティ形式で
呼び出せる必要は特にないんだよね。
むしろ、いまあるプロパティのうち、sortとかはメソッド形式にしたほうが
いい気がしないでもない。
0918デフォルトの名無しさん
2007/07/10(火) 17:06:030919デフォルトの名無しさん
2007/07/10(火) 21:32:50int[] v = [3,2,1], w;
w = v.sort; // 最初間違ってこんな感じで書いてたぞ
0920デフォルトの名無しさん
2007/07/10(火) 21:45:56それで慣れてると、カッコなしでもありかなとは思う。
0921デフォルトの名無しさん
2007/07/10(火) 21:51:390922デフォルトの名無しさん
2007/07/10(火) 23:03:27writefln("Hello,world.".toupper.tolower)
こういう風にスマートに書けるんだけどなぁ・・・
0923デフォルトの名無しさん
2007/07/10(火) 23:47:190924デフォルトの名無しさん
2007/07/11(水) 00:23:23>writefln("Hello,world.".toupper.tolower)
は嫌過ぎる
0925デフォルトの名無しさん
2007/07/11(水) 04:28:370926デフォルトの名無しさん
2007/07/11(水) 06:10:400927デフォルトの名無しさん
2007/07/11(水) 11:29:11関数呼び出しとデータアクセスが同じ記法なのは俺もキモイと思うけど、
名前次第で我慢出来なくもない気もする。プロパティっぽい名前なら
ギリギリセーフ。array.sort は嫌だけど、array.sorted なら許せる。
あー、でもやっぱキモイな。
0928デフォルトの名無しさん
2007/07/11(水) 12:37:46ソートしたものを返すんじゃねーの?
0929デフォルトの名無しさん
2007/07/11(水) 12:49:210930デフォルトの名無しさん
2007/07/11(水) 12:53:05const(int)[] v = [3,2,1], w;
w = v.idup.sort;
writefln(w);
}
invariant型の配列をソートできるんだが、いいのか?
0931デフォルトの名無しさん
2007/07/11(水) 16:01:19むしろそれができないとなるとおかしいように思うんだが・・・
0932デフォルトの名無しさん
2007/07/11(水) 16:12:480933デフォルトの名無しさん
2007/07/11(水) 16:39:42int[] v = [3,1,2];
v.sort;
writefln(v); // [1,2,3]
0934デフォルトの名無しさん
2007/07/11(水) 16:41:16w = v.idup.sort;
^^^^
これをソートできるのがおかしいって言いたかったんだけど。
w は表示するために代入してるだけで深い意味はない。
0935デフォルトの名無しさん
2007/07/11(水) 16:45:13writefln("foobarbaz".sort);
writefln("foobarbaz");
}
こういう例のほうが判りやすいか。
0936デフォルトの名無しさん
2007/07/11(水) 16:45:32invariant(int)[] v = ([3,1,2]).idup;
v.sort;
writefln(v); // [1,2,3]
0937デフォルトの名無しさん
2007/07/11(水) 17:00:25invariant型がin placeでソートできるっていうのは仕様なのかな?
そうは思えないが・・・
0938デフォルトの名無しさん
2007/07/11(水) 17:21:18さすがにバグだろ…。報告よろ。
0939デフォルトの名無しさん
2007/07/11(水) 17:23:59どれがバグでどれが仕様でどれが未実装なのかもよくわからんし。
0940デフォルトの名無しさん
2007/07/11(水) 17:25:33sortの引数がinoutだと考えれば変ではないのが難しいところ。
0941デフォルトの名無しさん
2007/07/11(水) 17:29:430942デフォルトの名無しさん
2007/07/11(水) 17:31:190943デフォルトの名無しさん
2007/07/11(水) 17:45:55やっぱりbindが動かないみたいなんだが
どの時点で動かなくなったのかな
0944デフォルトの名無しさん
2007/07/11(水) 17:46:27試してみたけど参照は変わってないね。こりゃどう考えてもバグ。
0945デフォルトの名無しさん
2007/07/11(水) 18:22:430946デフォルトの名無しさん
2007/07/11(水) 19:20:570947デフォルトの名無しさん
2007/07/12(木) 11:32:35ttp://wiki.dprogramming.com/DflGtk/HomePage
0948デフォルトの名無しさん
2007/07/13(金) 12:55:260949デフォルトの名無しさん
2007/07/13(金) 17:27:460950デフォルトの名無しさん
2007/07/13(金) 21:20:26NVIパターンで使おうと思ったらエラーが出たのですが
0951デフォルトの名無しさん
2007/07/13(金) 21:22:08class A {
public void foo(){ doFoo(); }
private abstract void doFoo();
}
class B : A {
private void doFoo(){ ... }
}
0952デフォルトの名無しさん
2007/07/13(金) 21:35:36したがってオーバーライドすることはできない。
そういう場合はprotectedを使うべし。
0953デフォルトの名無しさん
2007/07/13(金) 21:46:12そうなるとC++では可能な理由はなんなんでしょうね
0954デフォルトの名無しさん
2007/07/13(金) 21:53:02Dではデフォルトで仮想関数で、private関数は仮想関数にならない。
ってところか。単に設計思想の違いだと思うが。
0955デフォルトの名無しさん
2007/07/13(金) 22:02:10実際>>951でprotectedにしてもなんら違いはなさそうですもんね
0956デフォルトの名無しさん
2007/07/16(月) 15:28:320957デフォルトの名無しさん
2007/07/16(月) 16:29:200958デフォルトの名無しさん
2007/07/16(月) 22:51:300959デフォルトの名無しさん
2007/07/17(火) 00:00:320960デフォルトの名無しさん
2007/07/17(火) 00:10:310961デフォルトの名無しさん
2007/07/17(火) 00:24:320962デフォルトの名無しさん
2007/07/17(火) 00:33:500963デフォルトの名無しさん
2007/07/17(火) 02:19:190965デフォルトの名無しさん
2007/07/17(火) 11:24:01当分2.0にはしたくない・・
0966デフォルトの名無しさん
2007/07/17(火) 13:02:140967デフォルトの名無しさん
2007/07/17(火) 13:23:00を
const(char)[] bar = "bar"; // 2.0
と書くと億劫だけど
string boo = "boo"; // 2.0
と書けばいいんだよ
0968デフォルトの名無しさん
2007/07/17(火) 15:26:380969デフォルトの名無しさん
2007/07/17(火) 15:42:21もうv1は時代遅れですよ。
0970デフォルトの名無しさん
2007/07/17(火) 16:04:110971デフォルトの名無しさん
2007/07/17(火) 16:33:58むしろ俺らがアナウンス見に行くべきだろ常考
0972デフォルトの名無しさん
2007/07/17(火) 16:47:08readLineの返り値がconst付きって・・・
そりゃねーよ
0973デフォルトの名無しさん
2007/07/17(火) 19:31:52かといってconst(char)[]を返されても不便だから
配列を返すときはクラスのメソッド側が.dupして返すべきだと思うんだ
場合によってはクラスのカプセル化を破壊わけだし
0974デフォルトの名無しさん
2007/07/17(火) 22:01:46把握してないんだが
0975デフォルトの名無しさん
2007/07/17(火) 22:20:43constはそこにあるデータを変えることができない。
0976デフォルトの名無しさん
2007/07/17(火) 22:26:35constは俺が変えることができない。
0977デフォルトの名無しさん
2007/07/17(火) 23:40:47確かに、readLineは新たに配列をnewして返すような実装になってるから、
constはいらないかもしれん。
0978デフォルトの名無しさん
2007/07/18(水) 00:12:39把握した・・・が
invariantに既に入っているデータは誰(?)が入れたんだ?
語弊ありそうな予感
0979デフォルトの名無しさん
2007/07/18(水) 00:14:46constは関数内とかの狭い領域で書き換え不可ってことか?
あれ?
0980デフォルトの名無しさん
2007/07/18(水) 06:09:090981デフォルトの名無しさん
2007/07/18(水) 06:36:52____
/__.))ノヽ
.|ミ.l _ ._ i.)
(^'ミ/.コンパイラ
.しi r、_) | invariantはわしが育てた
| `ニニ' /
ノ `ー―i
constは、C++でも仮引数がconstとか、const関数とかよく使うだろ。
そのスコープにおいて副作用を起こす操作が出来ない。
0982デフォルトの名無しさん
2007/07/18(水) 10:04:30しかし、配列リテラルはinvariantではない。
0983デフォルトの名無しさん
2007/07/18(水) 11:06:55_d_assert、オリジナルがつくれないぞ?
D2.002っす
0984デフォルトの名無しさん
2007/07/18(水) 19:49:13バグだらけだから
仕様検討がいいよ
0985デフォルトの名無しさん
2007/07/18(水) 20:25:560986デフォルトの名無しさん
2007/07/18(水) 20:43:21JCPみたいなコミュニティ作って預けちゃえばいいのに
0987デフォルトの名無しさん
2007/07/19(木) 00:04:350988デフォルトの名無しさん
2007/07/19(木) 06:57:120989デフォルトの名無しさん
2007/07/19(木) 07:09:24っ Brainfuck
言語をシンプルにしすぎても書きにくくなるんで、
コードを書いたり読んだりするときの負担が最小になるよう、
うまくバランスの取れた設計が求められるかな、と。
トリック頼みになるところは言語使用で策定して欲しいというところはある。
複素数リテラルとかは、言語使用は複雑になるが、
クラスで実装とかやりたくないし。
0990デフォルトの名無しさん
2007/07/19(木) 10:09:280991デフォルトの名無しさん
2007/07/19(木) 10:21:060992デフォルトの名無しさん
2007/07/19(木) 22:20:390993デフォルトの名無しさん
2007/07/19(木) 22:21:200994デフォルトの名無しさん
2007/07/19(木) 22:22:120995デフォルトの名無しさん
2007/07/19(木) 22:22:450996デフォルトの名無しさん
2007/07/19(木) 22:22:520997デフォルトの名無しさん
2007/07/19(木) 22:23:32埋めるけど
0998デフォルトの名無しさん
2007/07/19(木) 22:23:500999デフォルトの名無しさん
2007/07/19(木) 22:25:06有効に使ってもいいけど次スレでその会話するのも面倒じゃね
1000デフォルトの名無しさん
2007/07/19(木) 22:26:2810011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。