D言語 Part34at TECH
D言語 Part34 - 暇つぶし2ch1:デフォルトの名無しさん
15/01/25 12:07:29.52 gAd5OZDm.net
プログラミング言語 D (D Programming Language) について語るスレッドです。

■本家
URLリンク(dlang.org) - 公式(英語)
URLリンク(www.kmonos.net) - 公式の和訳 (やや古いので注意)
URLリンク(issues.dlang.org) - D言語バグ報告
URLリンク(github.com) - D言語開発リポジトリ

■Wiki
URLリンク(wiki.dlang.org) - 公式Wiki
URLリンク(dusers.dip.jp) - D言語友の会(日本語フォーラムあり)

■プログラミング言語D (TDPL: The D Programming Language)
Andrei Alexandrescu 日本語版
URLリンク(www.shoeisha.co.jp)

ソース貼付サイト URLリンク(dpaste.dzfl.pl)
<$><$> URLリンク(www.bountysource.com)

■前スレ
D言語 Part33
スレリンク(tech板)

■過去スレ、関連スレ
URLリンク(makimo.to:8000)

2:デフォルトの名無しさん
15/01/25 12:09:12.95 gAd5OZDm.net
■DUB パッケージマネージャ
URLリンク(code.dlang.org)

■IDE
URLリンク(rainers.github.io) - Visual D(Visual Studioプラグイン)
URLリンク(code.google.com) - DDT(Eclipseプラグイン)
URLリンク(wiki.dlang.org) - Mono-D (MonoDevelop プラグイン)

■ライブラリ
URLリンク(github.com) - DWT(GUIライブラリ)
URLリンク(github.com) - GtkD(GUIライブラリ)
URLリンク(github.com) - DFL(GUIライブラリ・非公式最新版)
URLリンク(github.com) - Derelict(SDL/OpenGLなどのポーティング)
URLリンク(www.vector.co.jp) - DXライブラリ バインディング(作者サイトメンテナンスのため Vector)
URLリンク(www.ku6.jp) - 傾き指向プログラミング(SDLなどのポーティング)

■OMF<->COFF変換ツール
URLリンク(www.agner.org)

■D言語で作られたゲーム
URLリンク(www.nicovideo.jp) - D言語で作られた芝ゲー niconico動画
URLリンク(www.asahi-net.or.jp) - ABA Games

3:デフォルトの名無しさん
15/01/25 13:05:52.30 JhgO84F7.net
               ノ      ゚.ノヽ  , /}      ...
            ,,イ`"     、-'   `;_' '    ..::::::::::::::...
   ,-、  _.._   (        (,(~ヽ'~     ..:::::::::::::::::::::::
 )'~  レー'  〉   ヽ       i`'}       .:::::::::::::::::::::::
 ~つ     '-ー、  i       | i'     ...:::::::::::::::::::::::
 /       <  /     。/   !  ......:::::::::::::::::::::::::    これは>>1乙じゃなくて
/         ~^´     /},-'' ,●::::::::::::::::::::::::::::::::::::
i、        ,i' _,,...,-‐-、/    i  ::::::::  .:::::::::::::
..ゝ        <,,-==、   ,,-,/      .:::::::::::            放射能がうんたら
 )       {~''~>`v-''`ー゙`'~       ..:::::::::                          ........::.
 {        レ_ノ            ..::::::::.                         ......:::::::::
ノ         ''           ..:::::::                        ...::.:...:::::::::
                     .:::::::::                     ...:......:::::::::::: .
                    .:::::::::::.        .....      ..  ..::::::::::::::::::::::::   :::.
                    ::::::::::::::::.::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. ::  ::..
                    .:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::    ::.
                    ::::::::::::::::: :::::::::::::::::::::::::::::: :::::
                          .::    ::.  :::

4:デフォルトの名無しさん
15/01/25 15:09:19.73 N7hbj8cO.net
最新verにしたらgl3nってライブラリがコンパイル通らなくなった
破壊的変更入れる方も糞だが
製作者もカッコつけて変な機能使わずに、betterC程度で実装すべき

5:デフォルトの名無しさん
15/01/25 15:38:38.09 y+Auf1Wh.net
>>4
DMD2.064以降が必要っぽいね
エラー箇所を見てみたが、破壊的変更というよりコンパイラのバグだなコレ

6:デフォルトの名無しさん
15/01/25 17:06:42.38 gAd5OZDm.net
鯖名かわってるやんけ

■前スレ
D言語 Part33
スレリンク(tech板)

7:デフォルトの名無しさん
15/01/26 17:40:14.89 lqioQh4J.net
破壊的変更は一般的に前方互換性を壊すことであって……

8:デフォルトの名無しさん
15/01/26 17:48:08.66 lqioQh4J.net
いや、この場合は実際に前方互換性が壊れてるんだな

9:デフォルトの名無しさん
15/01/26 21:10:29.94 pUuTj9VR.net
betterC程度で実装すべき って正気か?!

10:デフォルトの名無しさん
15/01/26 21:26:28.76 aEhcjcMk.net
だって直してやろうにもわけわかんないもん

11:デフォルトの名無しさん
15/01/26 23:02:12.05 pUuTj9VR.net
直そうかと思ったけどgl3nってGNU make使えないのかまじかよ
makeコマンドまで専用に置き換えることないだろJK・・・

12:デフォルトの名無しさん
15/01/27 03:28:12.02 jDmPNZx5.net
それは言えてる

13:デフォルトの名無しさん
15/01/27 18:05:27.96 66YrvWGd.net
>>11
普通�


14:ノ使えるんだが…… バージョンの問題なのかな? 少なくともGNU make 4.0ではコンパイルできる



15:デフォルトの名無しさん
15/01/29 18:20:55.08 zwkKAiAG.net
何かDの公式サイトがちょっとモダンになってるなw
…で、日本語版はいつまで放置状態なんですかね

16:デフォルトの名無しさん
15/01/29 19:30:06.63 yGLSlnJU.net
君がプルリクエストを送れば放置じゃなくなるよ!
URLリンク(github.com)

17:デフォルトの名無しさん
15/01/29 20:41:25.06 4Rp6hoR2.net
言語の方はPRでなんとかなるけどライブラリの方はどうにも手が出せんな
翻訳元がどのバージョンかもわからん ソース一本一本バラバラで頭痛くなった

18:デフォルトの名無しさん
15/02/01 08:56:16.73 p1TMacHT.net
2.067のchangelog はもう上がってるんだなw
URLリンク(dlang.org)
本体はよ

19:デフォルトの名無しさん
15/02/01 09:56:58.98 sjXjc1T+.net
順調に行ったとして3月頭だよ もっと遅れると思う

20:デフォルトの名無しさん
15/02/01 13:21:53.88 zYqn1tT/.net
ベータテストをサボってない?
2.067.0-b1とか、changelogにある変更点は一つも入ってない時のバージョンじゃないか
こりゃregression地獄だろうな

21:デフォルトの名無しさん
15/02/01 13:54:34.43 sjXjc1T+.net
まだβテスト始まってない
2.067.0-b1はアルファ版だけど担当者不在の状態でベータとして公開された
手違いか確信犯かは知らない

22:デフォルトの名無しさん
15/02/01 14:15:31.14 pkXhoNhP.net
異常な早さで出てたもんなb1
2.066と同じくらいの時期に出たんじゃなかった?

23:デフォルトの名無しさん
15/02/06 00:40:38.22 0AkTWr8h.net
まだ高速リリースとか言ってるのか

24:デフォルトの名無しさん
15/02/10 00:28:01.15 fSGdLYp2.net
D言語初心者なんですが教えて下さい
<プログラミング言語D 日本語版>の12Pに出てくる、テキストに含まれる
単語ごとに出現回数を数えるプログラムを打ち込んでみてるのですが、
ソース上どこにもテキストファイルを読み込むような箇所が無いような気が
するのですが、その部分は自分で実装しろって事なんですかね?
URLリンク(ideone.com)

25:デフォルトの名無しさん
15/02/10 00:36:15.59 7gcf+5Ry.net
標準入力からテキストをもらうコードになってるよ。
a.exe < text.txt

26:デフォルトの名無しさん
15/02/10 00:37:59.30 7gcf+5Ry.net
stdinが標準入力
byLineが一行ずつ取り出し

27:デフォルトの名無しさん
15/02/10 01:03:06.19 fSGdLYp2.net
実行できました!!
有り難うございます。

28:デフォルトの名無しさん
15/02/10 05:06:36.82 fSGdLYp2.net
derelict3使ってらっしゃる方いますか・・?
ソースをダウンロードしてコンパイルまでは問題なくいったんですけど、
実行すると以下のようなエラーがでてしまいます。。
Building all packages.
Building DerelictPQ
../import/derelict/pq/functions.d
../import/derelict/pq/pq.d
../import/derelict/pq/types.d
dmd -lib -O -release -inline -property -w -wi -I"../import" -of"../lib/dmd/libDerelictPQ.a" "../import/derelict/pq/functions.d" "../import/derelict/pq/pq.d" "../import/derelict/pq/types.d"
/usr/src/phobos/std/stdio.d(975): Error: not a property fileno
/usr/src/phobos/std/bitmanip.d(1650): Error: not a property iota(this.dim()).fil


29:ter!((i) => ptr[i]) /usr/src/phobos/std/bitmanip.d(1651): Error: not a property filter(iota(this.dim())).map!((i) => BitsSet!size_t(ptr[i], i * bitsPerSizeT)) 対処法分かる方いらっしゃいますか?? バージョンはDMD64 D Compiler v2.066.1です。。 一応ぐぐってこういうページ(https://github.com/repeatedly/xxhash-d/issues/1) とかは見つけてみて、 posix.makとかいうテキストファイルをあさって中みてみたけど、 サイトの人が答えてる箇所と同じ部分は見つからないし、 何がなんだかサッパリ!



30:デフォルトの名無しさん
15/02/10 07:16:00.93 d72dCSc4.net
詳しい説明を省略するとコンパイルオプションに-propertyがついてるのが悪い
dmd -Isrc -m64 -w -d -property -O -release …
から -property を削って
dmd -Isrc -m64 -w -d -O -release …
にすればコンパイル通るはず。-propertyで検索するといい

31:デフォルトの名無しさん
15/02/10 07:23:34.59 d72dCSc4.net
あとposix.makはlinuxとかで使うメイクファイルだろうから
もしWindows使ってるなら直すべきはwin32.makとかかも

32:デフォルトの名無しさん
15/02/10 07:56:13.10 fSGdLYp2.net
>>28
先輩さすがっす!!
もう自分一人じゃ万策尽きてました!!
linux使いなんですがposix.makはいじらなくても平気でした。
Direlict3を落とした時についてたbuild.dの中の-propertyを全2箇所、
仰せの通り削除したら普通に通りました。
もっと勉強が必要ですね。
今日はこれでやっと寝れます。どうも有難う御座いました。

33:デフォルトの名無しさん
15/02/10 08:26:27.82 Hs3TdF+4.net
デレリクトIII世あやまれ

34:デフォルトの名無しさん
15/02/10 22:38:32.79 UryovtmZ.net
Pythonに代わってDの時代、来ちゃったかー
URLリンク(postd.cc)
枕詞はいいとして、srcgenのD版でのopIndexとopDollarの使い方が秀逸だわ
名前付き引数も実現できるんだな

35:デフォルトの名無しさん
15/02/10 22:48:56.53 CuK7u/7x.net
凄い、と感動するけどハックっぽいのが…
言語機能として欲しいよね、名前付き引数
あと多返値

36:デフォルトの名無しさん
15/02/11 00:33:34.64 AD+vXnh0.net
タプルまだ返せないんだった?

37:デフォルトの名無しさん
15/02/11 02:15:50.86 sEyNJ1vO.net
URLリンク(qiita.com)
↑ここに書かれてる方法に従って進め、ソースコードのビルドを試みたのですが、
以下のようなエラーが出ました。
libDerelictSDL2.a(sdl.o):(.rodata+0x20): `_D8derelict4util6loader12__ModuleInfoZ' に対する定義されていない参照です
libDerelictSDL2.a(sdl_71_698.o):(.data+0x40): `_D8derelict4util9exception17DerelictException7__ClassZ' に対する定義されていない参照です
libDerelictSDL2.a(sdl_71_698.o):(.data+0xb0): `_D8derelict4util6loader15SharedLibLoader7__ClassZ' に対する定義されていない参照です
libDerelictSDL2.a(sdl_71_698.o):(.rodata+0x4568): `_D8derelict4util6loader15SharedLibLoader4loadMFZv' に対する定義されていない参照です
libDerelictSDL2.a(sdl_71_698.o):(.rodata+0x4570): `_D8derelict4util6loader15SharedLibLoader4loadMFAyaZv' に対する定義されていない参照です
libDerelictSDL2.a(sdl_71_698.o):(.rodata+0x4578): `_D8derelict4util6loader15SharedLibLoader4loadMFAAyaZv' に対する定義されていない参照です
libDerelictSDL2.a(sdl_71_698.o):(.rodata+0x4580): `_D8derelict4util6loader15SharedLibLoader6unloadMFZv' に対する定義されていない参照です
libDerelictSDL2.a(sdl_71_698.o):(.rodata+0x4588): `_D8derelict4util6loader15SharedLibLoader8isLoadedMFNdZb' に対する定義されていない参照です
libDerelictSDL2.a(sdl_71_698.o):(.rodata+0x4598): `_D8derelict4util6loader15SharedLibLoader10loadSymbolMFAyaZPv' に対する定義されていない参照です
libDerelictSDL2.a(sdl_71_698.o):(.rodata+0x45a0): `_D8derelict4util6loader15SharedLibLoader3libMFNdZS8derelict4util9sharedlib9SharedLib' に対する定義されていない参照です
libDerelictSDL2.a(sdl_71_698.o):(.rodata+0x45a8): `_D8derelict4util6loader15SharedLibLoader8bindFuncMFPPvAyabZv' に対する定義されていない参照です
collect2: error: ld returned 1 exit status
--- errorlevel 1
ライブラリの配置等は書かれてる通りにやったと思うのですが・・・
どういう原因が考えられますか?

38:デフォルトの名無しさん
15/02/11 09:32:23.09 DokQQA8v.net
>>34
組み込みのタプルが欲しいってことでしょ
DIPがあったけど、どうなったんだろう
>>35
本当にそのページ通りにやってる? libDerelictUtil.aをコンパイラの引数に指定してないのでは
もしGNU/Linuxの利用者なら、さらに -L-ldl も必要
ところで、Derelict3はもうメンテナンスされてないのでDerelictOrgを使った方が良いかもしれない(dub必須だけど) URLリンク(github.com)
DerelictOrgをラップしたゲーム製作用ライブラリもあって、用途によってはこちらを使うのが便利かも URLリンク(github.com)

39:デフォルトの名無しさん
15/02/11 11:34:53.64 AEgPMJkt.net
URLリンク(wiki.dlang.org)
これのワクワク感はんぱないんだけど、あんま進展はしてないっぽいね。

40:デフォルトの名無しさん
15/02/11 11:41:59.07 sEyNJ1vO.net
>>36
私には誤りが2つありました。
サイトの通りにやったつもりでしたが、私はlinuxユーザ
としての仕様を理解していなかったようです。
ご指摘の通り-L-ldlをつけていませんでした。
しかしそれだけではできませんでした。
最初はページの順番で最後にdlをリンクして
dmd test.d -LlibDerelictUtil.a -LlibDerelictSDL2.a -L-ldl
このように記述しましたが、これでは先ほどのようなエラーがまた出てしまい、
dmd test.d -LlibDerelictSDL2.a -LlibDerelictUtil.a -L-ldl
このように順番を変えたらうまくいきました。
しかしderelict3にしてもそうですが、当然とはいえD言語+SDLでは
日本語ドキュメントがかなり少ないですね。
貼って頂いたサイトのライブラリもとても興味がわきますが、
英語頑張らないとダメですかね・・。
にしてもやっと最初の一歩が踏み出せました!
有難う御座いました!

41:デフォルトの名無しさん
15/02/11 15:10:15.21 z34G2oAC.net
なんで翻訳文口調?w

42:デフォルトの名無しさん
15/02/11 15:24:58.77 Cq2Zt0wJ.net
struct Hoge
{
Hoge _hoge;
}

構造体ってこんなこともできねーのか

43:デフォルトの名無しさん
15/02/11 15:41:17.19 I3RcppAe.net
たかし、休みだからって昼間からお酒なんか飲んで

44:デフォルトの名無しさん
15/02/11 15:58:10.30 lWf1wIdf.net
>>40
構造体は値型でclassとかと違って常に実体があるから
_hogeの中の_hogeの中の_hogeの中の_hogeの中の_hogeの中の_hogeの中の…
みたいになる

45:デフォルトの名無しさん
15/02/11 16:54:42.71 29qyXWgk.net
>>32
めちゃくちゃやな

46:デフォルトの名無しさん
15/02/11 17:29:15.53 xhm7zQSL.net
D言語人気あるなw

47:デフォルトの名無しさん
15/02/11 17:46:14.73 DokQQA8v.net
>>40にその説明で分かるか疑問だ

48:デフォルトの名無しさん
15/02/11 17:53:34.97 GbZ4KuWH.net
struct Hoge
{
Hoge* _hoge;
}
なら可能なのかな

49:デフォルトの名無しさん
15/02/11 19:48:00.41 AEgPMJkt.net
>>46
それはもちろんできる。
実際にstd.container.SListとかDListはそんな感じになってる。
(正確には内部のNodeが、だけど)

50:デフォルトの名無しさん
15/02/12 13:29:24.84 4XYPAIWu.net
>>36さんが貼ってくれたgfmを使おうとしたんですが、
その中に書いてあったサンプルプロジェクトURLリンク(github.com)
をdubでビルドを試みたんですが、
Error executing command build: Root package aliasthis contains reference to invalid package gfm:math
って言われて、
あれ?dubって足りないパッケージ自動でダウンロードしてくれるんじゃなかったっけ?って
思いつつも、仕方ないからdub.jsonから"dependencies"の項目全部消してimportファイルを手動で配置して
実行したら、今度はsource/aliasthis/colors.d(11): Error: module hsv is in file 'gfm/image/hsv.d' which cannot be read
と怒られた。
gfmの最新リポジトリ内のimageにはhsv.dがないが、ソースにはインポートされている。
こうなったらもうこのプログラムの実行は無理かな。

51:デフォルトの名無しさん
15/02/12 17:37:55.21 q1EoFTcz.net
>>48
バージョン1.1.4が古すぎて、dubリポジトリから消えたのが原因
(最新30バージョンしかダウンロードできない)
dependenciesに書いてるバージョンのgfmを持ってくればいいよ
git clone (gfmのgitレポジトリ); git checkout v1.1.4してdub add-localするなり、手動でコンパイルするなり

52:デフォルトの名無しさん
15/02/12 19:48:39.30 bXvlMxGY.net
wxDでポトペタで開発できる環境はまだ無かったり?
そういう環境があればあっさり普及しそうなんだが

53:デフォルトの名無しさん
15/02/12 19:50:51.16 PfMIiKi9.net
あっさり動かなくなるのが先

54:デフォルトの名無しさん
15/02/12 19:51:29.35 y+H1/X6i.net
なるほど

55:デフォルトの名無しさん
15/02/12 20:51:21.63 q1EoFTcz.net
QMLバインディングがあるから、QtCreatorとやらでGUIを作れるんじゃないか
試したことないから知らないけど

56:デフォルトの名無しさん
15/02/12 20:53:00.31 3kErsrEg.net
ポトペタは実はあった
DFLとDWTのコードが書けていた
遠い遠い昔の話だ

57:デフォルトの名無しさん
15/02/12 21:06:55.00 4P7uNPIb.net
そもそもwxDが今や死んでるという…
お願いですからwxDかQtDかのどっちかでいいから生き返ってください
C++からのポーティングはやっぱ難しいのかな

58:デフォルトの名無しさん
15/02/12 21:29:47.24 3kErsrEg.net
QtDは最初よかったけどなんか根が深そうなエラーが散発的に出てきて辛くなったな
開発者の人もくじけてしまったんだろうか

59:デフォルトの名無しさん
15/02/12 21:34:47.94 PfMIiKi9.net
DFLのポトペタは今もできる

60:デフォルトの名無しさん
15/02/12 22:16:49.62 q1EoFTcz.net
ポトペタという単語、自分とは別の文化圏の香りがする……

61:デフォルトの名無しさん
15/02/12 23:09:30.23 PfMIiKi9.net
QtD サポートのために traits 増やしたお というのを数年前に見て度肝を抜かれた
だがそれでも時既に遅しだったのかもしれない

62:デフォルトの名無しさん
15/02/13 01:55:34.54 Bhurw0eL.net
>>49
なるほど、確かに古いパッケージ見てみたら該当のソースがあった!
しかし今度はね。それだけじゃなくてね。std.loggerってのもないんだって・・w
Wikiでちょっと見た所、過去にあったimportファイルみたいなのだが、
今はstd.experimentalとやらに分類されてるようで、
それは標準添付ではなくて、リポジトリから持ってこないといけないみたい。
で、loggerというディレクトリに5つのソースファイルに分割されていた・・w
たった1年か2年前のソースをビルドするのがこんなにも大変とは、
D言語の破壊的成長力に、め・・目を見張るばかりだ!

63:デフォルトの名無しさん
15/02/13 08:41:05.07 OQXQ5SVC.net
互換性維持しない方向で成長するのは別に構わんけど
過去のリポジトリ消される(ライブラリ含めて)のはめっちゃ困る罠

64:デフォルトの名無しさん
15/02/13 08:46:04.43 wpAfYcVd.net
こういうことがあるからあんまり流行らないんだろうなぁと思う

65:デフォルトの名無しさん
15/02/13 10:04:02.80 Bhurw0eL.net
うーん・・
dub buildで急にエラーが出て何もできなくなった。
ソースとかまるで関係なく、どんなプロジェクトでも同じ文言を吐き出す
ようになったのだが、、
dub build
Error executing command build: Failed to invoke the compiler dmd to determine the build platform: {
"compiler": "dmd",
"frontendVersion": 2066,
"compilerVendor": "Digital Mars D",
"platform": [
"linux",
"posix"
],
"architecture": [
"x86_64"
],
}
Error: Error writing file '/tmp/dub_platform_probe.o'
dub_platform_probe.d見ても原因がさっぱり分からない助けてくれ。

66:デフォルトの名無しさん
15/02/13 10:44:48.60 GGd+ovbB.net
Dの破壊的変更はもっとマシになるべきだが対策することが出来る
だが半生ライブラリはダメだ 滅ぶべき
パッケージシステムは道を誤りし背教者どもの墓標

67:デフォルトの名無しさん
15/02/13 13:22:45.55 hveNpu6j.net
>>60
え、そっちもGitレポジトリでしょ? 過去の状態のを使えばいいのでは
(内容も変わってるかもしれないし)

68:デフォルトの名無しさん
15/02/13 13:33:09.45 hveNpu6j.net
>>61
dubレポジトリは個人がボランティアで運営してるっぽいから仕方ない
あそこはGithubからミラーしてるだけだから、どうしても古いバージョンが入手できないということはないしね
2015年前半に、D言語の宣伝・普及のための団体を作るとかいう計画を立ててるらしいけど
それ以前にこういうボランティア任せの部分をちゃんとしたサービスとして運営できる組織を作って欲しいなぁ

69:デフォルトの名無しさん
15/02/15 02:45:27.03 cP5B7v6s.net
人を動かすにはお金が必要なのです…

70:デフォルトの名無しさん
15/02/15 03:06:40.00 f2y5BLpx.net
永遠の17歳でいればずっと輝いていられる
そんなD言語

71:デフォルトの名無しさん
15/02/15 09:59:28.43 lHovhrIX.net
Swiftのポジジョンに収まっていれば安泰(?)だったかもなぁ

72:デフォルトの名無しさん
15/02/18 21:59:32.13 afKn2lden
C++のstd::queueのようなものが使いたいです。
O(1)で先頭への追加ができるコンテナは無いのでしょうか?
ここでも議論されてはいますが、結局自分でリングバッファを実装するしか無いのでしょうか…
URLリンク(forum.dlang.org)

73:デフォルトの名無しさん
15/02/19 13:19:34.20 HRi6jpIR.net
必要なのは D言語の入門・解説ではなく D言語とのつきあい方のガイドである

74:デフォルトの名無しさん
15/02/19 13:26:50.22 HRi6jpIR.net
Beta2
URLリンク(downloads.dlang.org)

75:デフォルトの名無しさん
15/02/19 15:56:05.50 IlBmsRQL.net
オオカミ言語

76:デフォルトの名無しさん
15/02/19 19:41:27.84 XR+Fo/Bc.net
>>71
たしかにそうかも
自称ですら「2番めに学ぶ言語としていいよ!」とか言ってるし

77:デフォルトの名無しさん
15/02/19 23:05:32.06 /l77WhQC.net
1番目に学ぶべきはCかJavaかC#
2番目に学ぶべきはCかJavaかC#のまだやってないの
3番目に学ぶべきはJavaScriptかPythonかRuby

78:デフォルトの名無しさん
15/02/19 23:20:17.85 VH3d6pj7.net
実際の状況を考えると、CとJavaとC#が選択肢に並ぶ場面ってそうそう無いよな

79:デフォルトの名無しさん
15/02/19 23:22:06.59 VH3d6pj7.net
>>74
ありゃ相当古い記述なのであまり真に受けない方がいい
今は割と初心者向けのリソースがあるし(英語が読めない人間には無いも当然だけど)

80:デフォルトの名無しさん
15/02/20 00:33:37.66 0dV0e97W.net
D言語はまだ英語無しで学べる言語じゃない
まあ


81:レファレンス読むよりソース読んだ方が手っ取り早いかもしれないけど (でもソースがレファレンスの代わりになるってunittestのおかげだよね)



82:デフォルトの名無しさん
15/02/26 23:20:00.62 3O66RLhf.net
お前らが「最近のD言語は安定しててつまらない」って言い始めたら本気出す

83:デフォルトの名無しさん
15/02/27 00:27:23.38 K5JNT6u2.net
本当に安定しててつまらないよ、細々とした調整ばかり
今年はDIP69含めて大幅な変更に期待

84:デフォルトの名無しさん
15/02/27 00:35:21.49 f/HlKW2K.net
RoRみたいなキラーフレームワークの登場が最優先だろ
変更ばっかじゃいつまでたっても出てこねえんだよお

85:デフォルトの名無しさん
15/02/27 16:16:04.75 K5JNT6u2.net
まさにRubyも仕様変更の多い言語なわけだし、あまり関係なさそう
キラーなんたらが出る以前に、それなりに人気が無いと始まらん

86:デフォルトの名無しさん
15/02/27 17:00:53.63 fb9Ltl2D.net
RubyやPythonと違ってネイティブ吐けるところがメリットだけど
Pythonで間に合ってます

87:デフォルトの名無しさん
15/02/27 17:16:40.06 K5JNT6u2.net
PythonとDの両方が、同時に選択肢に入ってくる状況なんてあまり無さそうだがな

88:デフォルトの名無しさん
15/02/27 17:23:58.74 iHoQTjKY.net
>>82
ライブラリが充実して実用的に使えるバージョンがない
複数組み合わせて使うとたちまち破綻する
比べる土俵が間違ってる

89:デフォルトの名無しさん
15/02/27 18:00:21.53 V3GT5Jyg.net
バージョンが変わって動かないなら自分で直せばいいじゃない

90:デフォルトの名無しさん
15/02/27 18:17:54.33 XIuqZzpl.net
他の言語に比べて、D言語でしかできない or ものすごくやりやすい ことってなによ?

91:デフォルトの名無しさん
15/02/27 19:17:07.04 mK3Wrb1I.net
自分がそうだけど継ぎはぎだらけのC++の汚さに絶望した人がやってるんだと思う
スマートなコーディングができるのにアセンブリコードが出力されるから
Javaやスクリプト系のように速度で妥協することもない

92:デフォルトの名無しさん
15/02/27 19:22:04.02 qLq7jEUd.net
C++で同じことできるって言われても意味ないんだよねえ。
単なる見せかけの機能だけに釣られてる奴はC++やってた方がいい。

93:デフォルトの名無しさん
15/02/27 19:23:14.99 mK3Wrb1I.net
ちょっと理解できてないのかな
C++よりスマートなコーディングができることに魅力を感じてるって話なんだけど

94:デフォルトの名無しさん
15/02/27 19:28:30.17 mK3Wrb1I.net
とりあえずバカはレスしない方がいいと思うんだ

95:デフォルトの名無しさん
15/02/27 19:36:30.29 6qk14JOo.net
>>89はお前に同意してるだろ

96:デフォルトの名無しさん
15/02/27 19:50:40.22 XIuqZzpl.net
>>88 >>90
たとえば?
C++ も 11, 14 で多少はマシになったと思うんだけど、
どの辺りが問題で、D言語ならどういうふうにスマートに書けるんだろう?

97:デフォルトの名無しさん
15/02/27 19:58:54.66 K5JNT6u2.net
>ライブラリが充実して実用的に使えるバージョンがない
?

98:デフォルトの名無しさん
15/02/27 21:39:53.48 PrbBT478.net
テンプレート絡みだけでかなり差別化できてるんじゃね
あと今更イテレータとか触りたくないよね

99:デフォルトの名無しさん
15/02/28 00:25:57.89 eZcrJ6fq.net
C++の偉い人もタイムマシン手に入れたら何したいって聞かれて
C++のテンプレート周りの構文をD言語風にしたいって言ってたな

100:デフォルトの名無しさん
15/02/28 01:49:28.71 2/mdATAK.net
D言語は気持ちよくプログラミングできるんだ
俺にとってのD使う理由はそれで十分

101:デフォルトの名無しさん
15/02/28 02:14:47.96 OQbzO6Hu.net
C++は気持ち悪いからな
関数ポインタとデリゲードが別物であった時点で俺の中では終わった。

102:デフォルトの名無しさん



103:sage
>>98 C++で統一できるなら、std::function<...> で統一すれば済む問題だろ? DのデリゲードはCの関数ポインタに変換できるのか? 既存のC製ライブラリを使うときはどうするんだ?



104:デフォルトの名無しさん
15/02/28 07:59:44.49 MvLmnYM1.net
AOっても誰も教えてくれませんよ?

105:デフォルトの名無しさん
15/02/28 10:26:19.86 X4brU/QV.net
>DのデリゲートはCの関数ポインタに変換できるのか?
Dにも普通の関数ポインタがあるので、そちらを使う
まあデリゲートでも(cast(void function())dg.funcptr)とか出来る、もちろんキャプチャした変数は使えなくなるけど

106:デフォルトの名無しさん
15/02/28 10:31:56.76 X4brU/QV.net
訂正:dg.funcptrは既に関数ポインタなのでキャストは不要
当たり前だな、何を勘違いしてたんだろう

107:デフォルトの名無しさん
15/02/28 10:32:47.26 OQbzO6Hu.net
キャプチャなんてもんがある辞典でC++は消滅すべき

108:デフォルトの名無しさん
15/02/28 10:41:51.15 dohjXiRJ.net
>>101
C++もキャプチャ変数が無ければC関数ポインタとして渡せるから、似たようなものだね。
つまり >>98 は単に無知だったということだな。
>>103 も言葉通りだとナンセンスだが、「キャプチャ変数を明示する必要がある」という意味なら一理ある。

109:デフォルトの名無しさん
15/02/28 12:34:31.63 C0E19LHH.net
キャプチャ自体はなるほど、と思ったけど
キャプチャ周りの書式はもうちょっとどうにかならんかったかなと思う
初見のときはあまりの違和感に頭がしばらくぐよんぐよんした

110:デフォルトの名無しさん
15/03/01 09:38:36.00 OUJYb7d1.net
URLリンク(issues.dlang.org)
S氏のバグ報告、これってProxyにtoHash付いたのが原因か
getHash(cast(const void*)a)としてるけど、delegateをconst void*にキャストするのがdeprecatedになった

111:デフォルトの名無しさん
15/03/01 11:03:23.35 aFT4GJSL.net
constなdelegateとかにいまだに違和感がある

112:デフォルトの名無しさん
15/03/01 20:39:46.21 OUJYb7d1.net
2.067マダァ-? (・∀・ )っ/凵⌒☆チンチン

113:デフォルトの名無しさん
15/03/01 22:07:38.95 H0vTWA+P.net
まだ RC も出てないよ
後1,2回ベータが出てからその後のはず

114:デフォルトの名無しさん
15/03/02 04:53:56.17 AZdlh9F+.net
始まる前に終わるのか

115:デフォルトの名無しさん
15/03/03 18:26:41.34 lY8jIC0A.net
>>97これ

116:デフォルトの名無しさん
15/03/04 10:09:49.78 FV6jzTFn.net
beta3
URLリンク(downloads.dlang.org)

117:デフォルトの名無しさん
15/03/04 23:56:06.11 FV6jzTFn.net
vibe.dの問題が解決できるまで2.067のリリースを遅らせるようだ

118:デフォルトの名無しさん
15/03/05 01:37:44.30 gwTnmSIO.net
D言語わくわく
URLリンク(next) 2ch.net/tech/1425486862
       ↑
      ツメル

119:デフォルトの名無しさん
15/03/05 02:08:06.26 x1uxCIef.net
スパムみたいな書き方だな

120:デフォルトの名無しさん
15/03/05 04:06:53.30 n3NecQLR.net
punycodeでも検閲回避不能か

121:デフォルトの名無しさん
15/03/05 09:52:56.19 x1uxCIef.net
2.067ではGCが高速化したらしい

122:デフォルトの名無しさん
15/03/13 16:58:15.46 xCaUG5yII
sc記念

123:デフォルトの名無しさん
15/03/15 12:30:14.94 gUpehvCT.net
フォーラム見てるとWalterとAndreiに対してヘイトが溜まるなぁ
なんだこいつら

124:デフォルトの名無しさん
15/03/16 00:49:17.06 +bImnCtP.net
>>119
なんか横暴なことでもしてるの?

125:デフォルトの名無しさん
15/03/16 08:22:23.11 rfonf8fQ.net
別に横暴って訳じゃないけど、なんか他人を見下してる風なんだよな
自分たちと違う意見を持つ人間ってだけで馬鹿にするような返答や皮肉を繰り返してた時はちょっと引いた
特にWalterは何かにつけて「30年間プログラマをやってきた経験」とやらで他人の意見を蹴ったり、一方で都合が悪くなると返事しないので腹立つ

126:デフォルトの名無しさん
15/03/16 10:32:44.07 r187UUhH.net
>自分たちと違う意見を持つ人間ってだけで馬鹿にするような返答や皮肉を繰り返してた時はちょっと引いた
あるある
こういう態度からは何も生まれない

127:デフォルトの名無しさん
15/03/17 11:46:22.59 JR5CbamM.net
2.067RC 出た

128:デフォルトの名無しさん
15/03/22 11:14:50.00 GjqveEz/.net
やっとか

129:デフォルトの名無しさん
15/03/23 09:50:52.33 YJLz3rN2.net
FacebookがD言語を開発してるみたいな誤解を与えられたの、AAの目論見通りなのかな
実際はちょいと金貰っただけだし、業務ではほぼ使われてないとAAも言ってたし

130:デフォルトの名無しさん
15/03/26 10:19:51.24 jtu1q66h.net
正式リリース出たで

131:デフォルトの名無しさん
15/03/27 10:32:23.05 i1/0Dr4k.net
以前ここで見た気がするけど
dmd2.067(win32)でも、windows8.1 64bitで
以下が落ちる
---
size_t count;
scope(failure) count.writeln;
foreach (_; 0 .. 100) {
count++;
new byte[100_000_000];
}
---
13
core.exception.OutOfMemoryError@(0)

132:デフォルトの名無しさん
15/03/27 22:14:20.45 CTT/twdI.net
GC「それはな…ちゃうねん」

なんかGC作動オプションつけられるようになったっぽいから色々試してみたけど
どうやっても落ちるのな

133:デフォルトの名無しさん
15/03/28 14:05:37.34 1FIUchx6.net
PreciseGC にならないとダメ
非アドレスをはじけないから
デカいブロックを使用中と誤認したり無駄なスキャンも防げない
自前で malloc/free するか Win64使うか

134:デフォルトの名無しさん
15/03/28 14:54:58.16 1U0GdOh9.net
でかいJPEGファイルをロードしたくらいで引っかかる上に
外部ライブラリを使ってるから回避できなくてとても困る
やはり時代は@nogcか…

135:125
15/03/28 14:55:17.12 3c7jmW0j.net
いい加減、64bit環境を構築するかー
さんくす!
一応 delete で、不要と教えてあげれば落ちないけど
GCの意味ないなあとか思っていじってました
GC「要らないならいうてやー」

136:デフォルトの名無しさん
15/03/28 15:40:21.32 1FIUchx6.net
10-20MB以上のデカいブロックだけmalloc/freeするのがいい
GCに預けたやつを中途半端に手出しするのもあんまり

137:デフォルトの名無しさん
15/03/28 15:42:10.46 F7N+uTWP.net
GCの方がトータルで速いと主張してたのはなんだったんや・・・
つか、GC無しが有り環境に移行するのはまだしも、有りだったのが無しに移行するのって辛いよな

138:デフォルトの名無しさん
15/03/30 13:07:23.56 i+YJuxFC.net
D言語からC言語のヘッダファイルを読み込むにはどうしたらよいですか?
具体的にはwindows.hとかを読み込みたいです。
DirectXとかも使いたいのでC++用のCOMのヘッダも読み込みたいです。
D言語はライブラリが少ないし、
マイナー言語なので、ライブラリ提供者から公式なサポートが無いです。
そのため、C/C++用のライブラリをそのまま流用して使いたいです。
ヘッダファイルには、C/C++用のマクロなども定義してあるので、
D言語はC/C++の全機能をサポートする必要があります。
このために、DとC/C++を切り替えるスイッチが必要で、( 例えば extern C++{ } )
私が知りたいのはこの機能です。

139:デフォルトの名無しさん
15/03/30 13:45:54.48 yiQdteM4.net
原則:
・C/C++のヘッダを直接読むことはできず変換が必要
・DMDでWin32アプリを作る場合に限り、C/C++ののライブラリの変換も必要
大抵のライブラリはすでに変換済みのが用意されてるのでそれを使うだけ
Win32API -> URLリンク(www.dsource.org)
ゲーム用とかなら github/DerelictOrg が充実してる

140:デフォルトの名無しさん
15/03/30 13:51:58.23 yiQdteM4.net
いちおう公式のバインディング集 使ったことないからどのくらいあてになるかは知らない
URLリンク(github.com)

141:デフォルトの名無しさん
15/03/30 23:00:53.68 QPp3Flh2.net
wxDを使えている人に質問です。windows上でmingwからwxDをコンパイルしようとすると、wxWidgetsのコンパイルまでは成功したのですが
、wxDのコンパイルで以下のようなエラーがでます。
export PATH=/e/D/dmd2/windows/bin:/e/D/dm/bin:$PATH
export WXDIR=/e/D/wxWidgets-2.8.12
make
dmc -D__DMD__ -mn -g -o+none -D____ -D__WXDEBUG__ -Ie:/D/wxWidgets-2.8.12\inclu de -Ie:/D/wxWidgets-2.8.12\lib\dmc_lib\mswd -w- -I. -WA -DNOPCH -HP90 -Ar -Ae -HP99 -c -oaccel.obj accel.cpp
virtual ~name() \
^
local_events.h(49) : Error: storage class is illegal in this context
{ \
^
local_events.h(50) : Error: illegal constructor or destructor or invariant decla ration
ProcessEvent(e); \
^
local_events.h(52) : Error: undefined identifier 'ProcessEvent'
}
^
local_events.h(53) : Warning 18: implied return of name at closing '}' does not return value
void RegisterDispose(Virtual_Dispose onDispose) { m_onDispose = onDispose; } \
^
local_events.h(67) : Error: undefined identifier 'm_onDispose', did you mean 'on Dispose'?
virtual ~name() { m_onDispose(this); } \
^
local_events.h(68) : Error: storage class is illegal in this context
Fatal error: too many errors
--- errorlevel 1
--- errorlevel 1
--- errorlevel 1

142:デフォルトの名無しさん
15/03/30 23:02:22.58 QPp3Flh2.net
dmd 2.067.0, dmd 2.054
wxWidgets-2.8.12
wxd 0.16
dmd 2.067.0, 2.054どちらでもエラー内容は同じでした。何が問題なのでしょうか?

143:デフォルトの名無しさん
15/03/31 00:23:32.12 DLD3Q9u2.net
どう見ても C++ でコケてるんだが

144:デフォルトの名無しさん
15/04/05 02:08:57.94 i8c3cK/q.net
久しぶりにさわったらUFCSとかrangeとかイケてるやん、書いてて気持ちえ~わ~

145:デフォルトの名無しさん
15/04/08 21:42:13.87 QBLG8yia.net
replaceはstringとregexで被ってるのか

146:デフォルトの名無しさん
15/04/08 22:47:53.09 bms3DTdi.net
URLリンク(www.kmonos.net)
>非仮想メンバ関数。C++では、関数がvirtualになるかどうかは クラスの設計者が前もって決定します。
>メンバ関数をオーバーライドすることにしたのに、基底クラスの方で改造を忘れる… というのは、
>よくある(けれども非常に見つけにくい)コーディングミ


147:スです。 >全てのメンバはvirtualにしておき、 オーバーライドが存在しないことをコンパイラが検知して非 virtual に変える、 >というアプローチの方が信頼性があります。 と書いてありますが、実際にどこまでそんな最適化が機能しますかね。 ローカルスコープでnewされたオブジェクトなら簡単に検地できますが、 メソッドの引数で渡されたオブジェクトや、 メンバ変数で保持しているオブジェクトに対して、 オーバーライドが存在しないことを、どこまで検地できるものなのでしょうか。 D言語はモジュール単位でコンパイルするので、 自分のモジュール以外で何が行われるかわからないのでは?



148:デフォルトの名無しさん
15/04/09 05:18:11.14 uR76CfxE.net
詳しくないのでさっぱりなのだがこっちにも
URLリンク(www.kmonos.net)
>コード生成時にDはクラス階層を全て把握していますので、
>オーバーライドされていない関数への呼び出しは全て最適化されて non-virtual になります。
って自信満々に書いてあるね。
で、なんかそんな話題どっかでみたなあと思って探してみたが
スレリンク(tech板:300-303番)
別に結論出てなかった。
まあ「finalつけると速くなる」なら(今でも同じかは確認してないが)
可能であろうと、少なくとも真面目に実装はしてないんだろうね。

149:デフォルトの名無しさん
15/04/09 09:23:07.96 BNp5TkNs.net
virtual がキーワードとして追加された後しばらくして撤回されたのが最近の出来事

150:デフォルトの名無しさん
15/04/09 18:19:45.10 HK14cBmq.net
D言語のコンパイラで一番いいのは何ですか?

151:デフォルトの名無しさん
15/04/09 19:55:59.27 38RAslub.net
dmdしか使ってない俺にもdmdが最善ではなさそうなことはわかる

152:デフォルトの名無しさん
15/04/09 21:10:41.59 BNp5TkNs.net
コンパイルが最速でプロファイルもカバレッジもちゃんと動くdmdが最善でないとな?
win32/simd とか win64/seh とか足りないのはあるけど

153:デフォルトの名無しさん
15/04/10 06:51:36.42 uqc+UxkP.net
dmdのsimdってまだSSE2までしか対応してないのけ?

154:デフォルトの名無しさん
15/04/11 15:44:58.43 E/CwOvDs.net
D言語ってなんで流行らないんですか?

155:デフォルトの名無しさん
15/04/11 17:32:39.43 7fSRDMX5.net
ポストC++を目指してるんだけど
C++自体が使われてないから

156:デフォルトの名無しさん
15/04/11 17:42:57.03 u+ugD/Y+.net
俺が思うに、Cとソースレベルの互換を切ったのが不味かったな。
Cのヘッダが読み込めないんじゃ、生産性悪すぎ。
Cのライブラリを使おうと思っても、誰かがこっそりDに移植したのを使うしかない。
そんな怪しげなものは企業じゃ使いにくいわな。

157:デフォルトの名無しさん
15/04/11 22:26:51.94 BiO0sN0+.net
でもプリプロセッサみたいなXXXXXXなもの積んだら元の木阿弥だしなあ

158:デフォルトの名無しさん
15/04/12 02:43:30.27 XESAGs1Z.net
精度の高いhtodまだ?

159:デフォルトの名無しさん
15/04/12 09:38:06.20 y8PA+brm.net
C言語にはマクロがあるから難しいだろうね。
マクロとインライン関数とじゃ微妙に動作が違うし。
それを再現するのは難しいし、再現したらしたでDの人たちが怒る

160:デフォルトの名無しさん
15/04/12 11:32:27.28 E16OManC.net
他の言語に比べりゃマシ。
普通はC側からもグルーコードを書かないといけない。

161:デフォルトの名無しさん
15/04/12 11:41:30.34 kQPdUAS+.net
JNIとか死ねるし

162:デフォルトの名無しさん
15/04/12 11:47:57.98 UmUJTIj0.net
ライブラリ側の改造なしで普通にリンクできるってのは大きいなあ

163:デフォルトの名無しさん
15/04/12 14:18:52.37 y8PA+brm.net
でも、CのライブラリはC++からだと何の改造もなく普通に読み込めるし、
殆どのライブラリはC++から使われること「も」想定して書いてあるし。
ライブラリの公式なサポートがあるってのも大きいかと。
Dの宿敵は完全にC++なわけで、ここからシェア奪うの厳しくね?
しかも最近のC++はやたら高性能になってて、Dが圧倒的に優位といえるのは、
GCが有ることぐらいか。しかしDのGCは完全じゃないので、実際には開放できる領域を
見逃すことがあるらしい。>>127-129
しかもメモリを使えば使うほど、切迫していればいるほど、誤認の確率が高くなる。
本当にGCが必要な時ほど、GCが上手く動かなくなるという・・・。これはなんかおかしい。
まー一生C++使ってろって言われそうだが。

164:デフォルトの名無しさん
15/04/12 17:59:43.09 E16OManC.net
京大院卒の元


165:日立社員ですらrust,go,nimとやってきたがDは目次で投げ出すほど難しいらしい



166:デフォルトの名無しさん
15/04/12 21:05:35.95 /fCEzYcpA
難しくはないだろ…普通に使う分には


GCは今後改善されていく事を期待

167:デフォルトの名無しさん
15/04/12 21:04:55.27 tlWGpnIJ.net
C++やってないのかよ

168:デフォルトの名無しさん
15/04/12 21:27:54.60 Kyho4V/V.net
そこであげられてる言語は比較対象になるのか

169:デフォルトの名無しさん
15/04/13 17:54:24.16 bnhydr1P.net
仕様書であるTDPLを入門書と間違えて買ったんだろうな

170:デフォルトの名無しさん
15/04/13 19:57:56.23 S0M+DdK2.net
D言語パーフェクトガイドの時代が来たようだな

171:デフォルトの名無しさん
15/04/13 23:25:29.77 Gjz0iSdUJ
TDPLも決して難しい本じゃないだろ

プログラミング未経験者にとってはアレかもしれないけど

172:デフォルトの名無しさん
15/04/14 22:00:35.44 TJwhWYq7.net
スマホアプリが作れれば流行るんじゃね?

173:デフォルトの名無しさん
15/04/14 22:05:11.14 NpitylM9.net
Visual D使ってる人に質問です。
Visual Dって標準ライブラリの予測変換でないんですか?

174:デフォルトの名無しさん
15/04/14 22:38:44.42 o5X1XXSP.net
>>167
入力補完できるよ
URLリンク(rainers.github.io)

175:デフォルトの名無しさん
15/04/14 23:57:41.21 VlJAU5Jf.net
どうせ出てほしい時に出なくて
必要ないときに邪魔なポップアップが出るみたいな
お粗末なものにしかならないべ
言語設計レベルからそこまで考慮してないと

176:デフォルトの名無しさん
15/04/15 18:59:26.48 V49K0zxq.net
C#はforeach使うとGCが増えるらしいけど
Dはどうなの?

177:デフォルトの名無しさん
15/04/15 21:22:05.40 DNCbFPiX.net
Dってどこで学んだらいいんだ
dlang.orgしかない?

178:デフォルトの名無しさん
15/04/15 21:33:41.05 P7ZS5djvq
TDPL

179:デフォルトの名無しさん
15/04/15 22:20:50.17 kuK1eeQu.net
URLリンク(gist.github.com)
ここ読んで文法身につけて、
標準ライブラリは公式がそこそこわかりやすいからそれで。
(日本語訳はちょっと古いが、参考には十分なる)
んで、わからないことはここか、
最近はtwitterで#dlangのハッシュタグつけて質問するのも流行り。
自分も去年一度質問投げたら、一時間で三人から同じ解答来て震えた。

180:デフォルトの名無しさん
15/04/15 22:50:13.61 H6ZOKNFw.net
>>168
ありがとうございました。なんか出てきました。

181:デフォルトの名無しさん
15/04/16 06:03:51.02 3n63vngU.net
以前にC++とねんごろになれるうpあったとか見た気がしたけど、あれは幻覚だったのかこの流れ見ると

182:デフォルトの名無しさん
15/04/17 08:38:36.34 LOaAnlcG.net
namespaceに対応したり、C++側でインスタンス化されたテンプレートがDから使えるようになったんじゃなかったっけ?
C++ヘッダを直接import出来るようにするDコンパイラも開発されてるけど結構実用的ぽい
URLリンク(github.com)

183:デフォルトの名無しさん
15/04/17 13:06:38.13 n6u60MAl.net
>C++ヘッダを直接import出来るようにするDコンパイラも開発されてるけど結構実用的ぽい
あ、それいいね。てかそれしないと普及しないでしょ。互換性は大事。
COMとかもそもまま使えるようになるんかね。

184:デフォルトの名無しさん
15/04/21 22:23:29.12 k+lIUh1M.net
☆ 日本の核武装は絶対に必須ですわ。☆
URLリンク(www.soumu.go.jp)
☆ 日本国民の皆様方、2016年7月の『第24回 参議院選挙』で、改憲の参議院議員が
3分の2以上を�


185:エえると日本国憲法の改正です。皆様方、必ず投票に自ら足を運んでください。 私たちの日本国憲法を絶対に改正しましょう。☆



186:デフォルトの名無しさん
15/04/22 16:58:34.80 w0Yyg9N7.net
dsource.org もいよいよ廃止に向かう模様
使ってる人ほとんどいないだろうけど

187:デフォルトの名無しさん
15/04/22 17:06:41.43 QMLocF8n.net
ちなみに移住先は?最近D使ってないんでよくわからんけど

188:デフォルトの名無しさん
15/04/22 17:25:07.03 Atokf9a2.net
>>2のDUBに登録が最近の流行り

189:デフォルトの名無しさん
15/04/23 15:06:10.81 atwBzKak.net
ノイズが減るのは良いこと

190:デフォルトの名無しさん
15/04/23 19:54:37.61 g8/zXSRM.net
この言語
親クラスのprivate変数に継承先のクラスがアクセスできるじゃん

191:デフォルトの名無しさん
15/04/23 19:58:37.29 lZQ1F1hI.net
継承先のクラスが同一ファイル内にないか?
同一ファイル内のメンバは常にpublicだぜ

192:デフォルトの名無しさん
15/04/23 20:23:40.71 g8/zXSRM.net
まじかよ酷いな
ファイル=モジュールだからファイル分けるの面倒くさい

193:デフォルトの名無しさん
15/04/24 06:25:45.44 6TulMhAx.net
同一ファイル内にあるものは自動的にfriendだと思えばC++より便利だな

194:デフォルトの名無しさん
15/04/26 21:31:40.36 M02Af7kd.net
D2はまだ使用が固まってないからとうぶんの間は開発にはD1を使うことになるな

195:デフォルトの名無しさん
15/04/26 22:17:29.71 FiVYM95bN
こやつめ、ハハハ

196:デフォルトの名無しさん
15/04/26 23:49:43.65 NpZzAF6y.net
1のことは忘れるんだ……。
2も最近は破壊的変更が少ないし、
どうしても仕様が固まってるものを求めてるなら別の言語のほうがいいよ。
少なくともD1を使っていいことは一つもないと思う。

197:デフォルトの名無しさん
15/04/27 01:41:11.15 nAsvEGea.net
じゃあC++使うかな
とは言えない雰囲気

198:デフォルトの名無しさん
15/04/27 03:54:29.19 3o/5kFDH.net
D1かC++かならまじでC++使えばいいと思うよ
雰囲気っていうか、まあ確かにC++使うならここで宣言する必要はないと思うけど

199:デフォルトの名無しさん
15/04/27 07:50:54.32 XqA1wgYz.net
意外なことにrustの方が言語とAPI仕様の安定化に積極的っぽい

200:デフォルトの名無しさん
15/04/27 08:51:18.76 ZDDsb7dY.net
明確なゴールもなくフワフワと手を広げるから収束しないんだよ

201:デフォルトの名無しさん
15/04/27 19:40:18.02 u+p+733x.net
effectivec++読んだ時点でc++を見限らない奴はセンス無い

202:デフォルトの名無しさん
15/04/27 19:41:43.14 JZyYoAVB.net
>>192
それここ1ヶ月くらいのことじゃね?
まあでもそういう姿勢を公式に明確にするのはいいことだ

203:デフォルトの名無しさん
15/04/30 23:13:29.89 DC2IuzKP.net
PCがオワコンになって一般人はスマホやアップルウォッチしかコンピューターを持たない時代が来るのに
Dを始めとするPCアプリ専用言語に未来はあるのか

204:デフォルトの名無しさん
15/05/01 12:43:57.40 ZnsZ9ufL.net
>>196
そもそも、一般人はプログラミングしていない。

205:デフォルトの名無しさん
15/05/01 15:43:57.35 VV0Lze55.net
サーバーサイドでも使われないとか終わってる

206:デフォルトの名無しさん
15/05/02 00:09:29.37 i/dUwmAKi
dmdのソースにはARMだのandroidだのの文言が見えるが、
どんな感じなのかね

207:デフォルトの名無しさん
15/05/03 12:05:34.37 frUd71C/.net
>>198
Goで泥アプリ開発できるようになったし、PCから移行するにつれいろんな言語が泥とかアフォン
とかでも使えるようになる。
という妄想

208:デフォルトの名無しさん
15/05/11 22:49:25.75 umG0fBs5.net
Tcpを用いたサーバーアプリケーションを作成しています。
一つのSocketを処理するスレッドをspawnで起動しようと�


209:オたのですが、 "Aliases to mutable thread-local data not allowed." というエラーが出てしまいます。 Socketをスレッドのコンテキストとして渡す方法はありますか?



210:デフォルトの名無しさん
15/05/19 19:36:36.05 nbiNTEdK.net
sharedクラスに突っ込むとかかな

211:デフォルトの名無しさん
15/05/20 14:35:43.34 RjQMrwaX.net
enumのメンバの中からランダムに1つ取り出すにはどう書いたらいいですか?

212:デフォルトの名無しさん
15/05/20 17:11:00.71 VhPE5aVV.net
import std.stdio, std.traits, std.random;
enum E { Hard, Normal, Easy, }
auto lv = [ EnumMembers!E ];
lv[ uniform(0, 3) ].writeln();

213:デフォルトの名無しさん
15/05/20 17:35:41.74 RjQMrwaX.net
>>204
ありがとうございます。
std.traitsにenumのメンバの配列を作る機能があったんですね。

214:デフォルトの名無しさん
15/05/20 19:21:10.83 VhPE5aVV.net
あ、配列なんだからuniform(0, $)でよかった…。
タプルの配列化?みたいな
他にも関数の引数リストとか、構造体のメンバ変数を
タプルでとれたり、std.traitsは結構楽しい

215:デフォルトの名無しさん
15/05/23 09:46:23.34 LbQhEyX4.net
メンバにUDAを付加するだけで
文字列化やシリアライズのメソッドが自動or暗黙生成されるような
いい感じの小技はないかしら

216:デフォルトの名無しさん
15/05/23 20:05:33.06 T/VMnfch.net
static ifと文字列mixinを駆使すればなんでもできそう
コードはくっそ汚くなるけど…というかいくらなんでも汚すぎるので俺がなにか勘違いしてる
class Cls {
@getset(true, true) private string prop;
mixin Prop!(__traits(allMembers, typeof(this)));
}
struct getset {
bool get, set;
this (bool get, bool set) { this.get = get; this.set = set; }
}
mixin template Prop(Members...) {
static if (Members.length) {
mixin("alias Alias = " ~ Members[0] ~ ";");
static if (is(typeof(__traits(getAttributes, Alias)[0])==getset)) {
static if (__traits(getAttributes, Alias)[0].get) {
mixin("auto get_" ~ Members[0] ~ "() { return " ~ Members[0] ~ "; }");
}
static if (__traits(getAttributes, Alias)[0].set) {
mixin("void set_" ~ Members[0] ~ "(" ~ typeof(Alias).stringof ~ " value) { " ~ Members[0] ~ " = value; }");
}
}
mixin Prop!(Members[1..$]);
}
}
void main() {
import std.stdio;
auto cls = new Cls;
cls.set_prop("getset");
writeln(cls.get_prop()); // write "getset"
}

217:デフォルトの名無しさん
15/05/24 19:07:17.52 TlBS03PH.net
これいいなあ
それにしてもstatic foreachが欲しい…

218:デフォルトの名無しさん
15/05/26 22:32:12.74 KhQ392/2s
じゃあstatic whileも

そしてstatic goto…

219:デフォルトの名無しさん
15/06/13 18:35:51.38 GIDis6QW.net
>>196
そんなのは日本だけだぞ
海外ではPCとモバイルを使い分けるのが普通

220:片山博文MZ ◆T6xkBnTXz7B0
15/06/17 19:52:38.87 /OO8ry8l.net
Dの簡単インストーラー作るぜ。アイデア募集。

221:デフォルトの名無しさん
15/06/30 14:34:15.48 /IuhOBPcf
>>212
今でも解凍して
path通すぐらいじゃん

222:片山博文MZ ◆T6xkBnTXz7B0
15/07/03 16:37:05.52 Cj/+Kw22.net
DmInst ver.0.0を公開しました。
コンパイラーのDMCとDMDを簡単にインストールできるプログラムです。
URLリンク(katahiromz.web.fc2.com)

223:デフォルトの名無しさん
15/07/03 16:45:04.27 PTQIZZxq.net
苛寝

224:デフォルトの名無しさん
15/07/04 15:20:28.78 JqZMsJ+9i
DUBはあった方がいいと思う。あと、GDCとLDCのインストールもするようにしてみては。

225:デフォルトの名無しさん
15/07/09 00:26:47.91 vgLfGCMi.net
std.experimental.allocator の vote 始まった
URLリンク(github.com)
URLリンク(erdani.com)

226:デフォルトの名無しさん
15/08/07 01:19:25.71 AOl5d/Q7.net
vote

227:デフォルトの名無しさん
15/08/11 09:22:39.47 JJHEPwAB.net
2.068

228:デフォルトの名無しさん
15/08/11 21:22:49.65 /rELv5XJ.net
AliasSeq を Alias Equal と読み間違ってしまうマン

229:デフォルトの名無しさん
15/08/11 23:59:23.96 HcRp0udTh
タプルシンタックス…

230:デフォルトの名無しさん
15/08/20 19:16:20.38 6X6++Eio.net
お前らってeclipseのDDT使ってるの?

231:デフォルトの名無しさん
15/09/12 04:06:34.44 +P5YetMW.net
CTFE時に連想配列の値が上書きされてしまう。
URLリンク(dpaste.dzfl.pl)

232:212
15/09/13 01:16:43.63 6EXYsBmd.net
>>223 がgithub版でもおきるかなー?と思ったんだけど、github版dmdをコンパイル中にエラーが出た。
内容は、「ソースに\r\nが含まれますよ」というもの。
出してるのは、dmd -run src/checkwhitespace.d の部分。
このツールは
1. \r\n がソースに含まれている場合。
2. インデントに\tを使っている場合。
3. 行末に不要な空白文字がある場合。
にエラーを出すようなんだけど、3はともかく、これで行くことに決まったのかな。
smart-tab派なんだけどなー。
あ、github版でも212は再現しました。

233:デフォルトの名無しさん
15/09/14 08:11:30.88 zHbMvpj8.net
dmdがDベースになるね

234:デフォルトの名無しさん
15/09/23 01:15:09.12 c39jTuOR.net
おまいらこれはなんでなんだぜ
URLリンク(dpaste.dzfl.pl)
1. enum をクラスインスタンスで初期化できない→わかる。構造体でラップすると通る→?
2. 1. において、ラップされたクラスが mutable。

235:215
15/09/24 17:04:49.35 Q3uW0SwS.net
>>226 自己レスなんだけど、
1. URLリンク(issues.dlang.org)
2. URLリンク(issues.dlang.org)
なんだって。

236:デフォルトの名無しさん
15/09/26 08:34:31.58 58nZ62zg.net
This Week in D (英語)
URLリンク(arsdnet.net)
年初から続いてて筆者はDの入門書出版したりしてる

237:デフォルトの名無しさん
15/09/29 09:14:53.57 2BMWd/g5.net
2.068.2 出てた
ちなみに Win32-COFF が隠しオプション(-m32mscoff)で出来るようになってるので
OMF/optlink がイケてないと思っていた諸兄は試してみるがよいよいよい

238:デフォルトの名無しさん
15/10/01 21:28:45.14 S1ELEwjTE
64bitも隠しオプションだったよね

「コンパイラのソースくらい当然読んでるよね?」ってことなんだろうか…

239:デフォルトの名無しさん
15/10/04 20:25:42.92 fx9NWY8o.net
int arr[x][y][z];
これと同じメモリレイアウトでヒープに確保するにはどうすればいいですか?

240:219
15/10/04 20:56:03.94 fx9NWY8o.net
new int[x*y*z]でよかった。
問題なのはint[]のメモリへのアクセスをint[x][y][z]と同じようにする方法だった。

241:219
15/10/04 20:59:30.10 fx9NWY8o.net
自己解決。
[0][0][0],[0][0][1]...[0][1][0],[0][1][1]...の順番で並んでるだけだった。

242:デフォルトの名無しさん
15/10/06 01:18:13.90 4WYMUnp4.net
くっそ!
↓Manifest ConstantsのenumとAAのからみがおかしい。
URLリンク(dpaste.dzfl.pl)
↓CTFEで変数を修飾する方のscope class使うと abnormal termination
URLリンク(dpaste.dzfl.pl)

243:デフォルトの名無しさん
15/10/09 21:58:55.85 So4fPMkx.net
const class A { int a; this(int v) { a = v; } }
このクラスAを値に持つ連想配列を作りたいんだけど、
const(A)[int] hoge = [1: new const A(1)];
hoge[3] = new const A(3); // cannot modify const expression hoge[3]
みたいに、初期化はできても代入ができない。
A[int] hoge = cast(A[int])[1: new const A(1), 2: new const A(2)];
hoge[3] = cast(A)new const A(3);
てなふうにcastしたら回避できたけど、なんか美しくない。
typeof(new const A(1)).stringof == "const(A)" なのがおかしい気がするんだが。

244:223
15/10/09 23:28:50.19 So4fPMkx.net
書き込んでから思い出したけど、Rebindableとかできて結構経つしあきらめるしかない気がしてきた。
>>229 optlink死んでまうん?

245:デフォルトの名無しさん
15/10/10 00:27:09.81 MYHuAGIQ.net
const classとかscope classとかは今もまともに使おうと思えないね
普通のclass内でメンバをconstにするとかじゃないとまともに動く気しない

246:デフォルトの名無しさん
15/10/15 18:54:50.42 pJRyZOgY.net
nullではなく、空の連想配列で初期化するにはどうすればよいですか?

247:デフォルトの名無しさん
15/10/16 08:36:04.34 CAVKRc42.net
空の配列 == null なので無理
ただし空文字列 "" は例外 落とし穴になりがちなので注意

248:デフォルトの名無しさん
15/10/16 13:11:04.24 TDfNRPC3.net
ちょっと良くわかりませんが、D言語は空の配列すら作れないんですか?
不便ですね

249:デフォルトの名無しさん
15/10/16 17:46:08.84 ZZ3JoxKg.net
nullでない空ってなに

250:デフォルトの名無しさん
15/10/16 17:54:55.90 MCgyDKhx.net
a = {};
こんなのを期待してるのかな

251:226
15/10/16 18:32:37.08 +5uWvhRc.net
>>239-242 レスありがとう。やりたかったのはこういうことです。
string[string] buf;
auto buf2 = buf;
buf2["hello"] = "world";
buf.writeln; // > []
これと↓
string[string] buf = ["": ""];
buf.remove("");
auto buf2 = buf;
buf2["hello"] = "world";
buf.writeln; // > ["hello":"world"]
では結果が違うわけだけど、後半の上2行を初期化1行で書きたいな。
という話でした。

252:デフォルトの名無しさん
15/10/16 19:36:08.03 TDfNRPC3.net
結局どういうことなんですか?
Dでは空の配列を作れないんですか?
必ず何か入っていなければダメなんですか?
int[] a; って書けば空の配列になるんじゃないんですか?

253:226
15/10/16 21:04:57.54 +5uWvhRc.net
>>244
int[] a; で空の配列になりますよ。
226のは「連想配列」が俺にはややこしいっていう話です。

254:デフォルトの名無しさん
15/10/16 21:47:10.30 BcAfRt/g.net
>>243
string[string] buf = (a => (a.remove(""), a))(["" : ""]);
ところで、コンマ演算子を廃止しようとか言ってたのは自然消滅したのか?

255:226
15/10/16 22:51:07.22 GwISFyO6.net
>>246 ありがとうございます。ところでもっと基本的な疑問がわいたのですが、
>>243 の後半での、bufとbuf2の中身がずっと同じであるっていうのは、仕様で保証されてるんでしょうか?
Windows版dmd2.068.2では、1000個値を追加しても同じでした。

256:デフォルトの名無しさん
15/10/17 09:05:55.54 M7lcZRBS.net
>>243
バグっぽい removeしつくしたら null になってるはずなんだけど

257:デフォルトの名無しさん
15/10/17 09:08:29.29 M7lcZRBS.net
それに連想配列の内部実装は最近まで大きく書き換えられてて
動作の微妙な違いとかあるのでトリッキーなことは避けるべき

258:226
15/10/17 22:20:49.79 KpZ8gQf0.net
>>248-249 そうなんですね。書き換えます。ありがとうございます。

259:デフォルトの名無しさん
15/10/20 00:01:18.64 wy5QxwnK.net
リンクエラー。2.067.1では通ってた。
URLリンク(dpaste.dzfl.pl)
1. -m64 で
2. CTFEで実行されるラムダ内で定義されている
3. 配列をメンバに持つ構造体の
4. 配列のconcatを行う

260:デフォルトの名無しさん
15/10/22 22:35:23.39 WlXBpB56.net
↓CTFEでtoHash/opEqualsが効いてない。
URLリンク(dpaste.dzfl.pl)
CTFEはまだまだなかなかナヤマシイな! >>249 がらみかしらん。

261:デフォルトの名無しさん
15/10/28 16:43:28.27 w9dndjrH.net
D言語って、Javaみたいにソースファイル名とクラス名を同じにしてしまうと、
他のソースでクラス名のつもりで記述したものがパッケージ名扱いになってしまうため
Hoge.Hoge のように同じ名前を2回書かないとクラス名と解釈してくれないと思うのですが、
これを1回だけの記述で済ましたい場合、皆さんはどのように解決されているんでしょうか?
ソースファイル名を変えるのもmodule文で別名にするのも、何か違うように感じてしまいます。

262:デフォルトの名無しさん
15/10/28 19:24:28.95 9zUX3+we.net
モジュール名とファイル名は小文字
クラス名は大文字始まり
それでもカブるようなケースはパッケージを作るからまず困らない

263:デフォルトの名無しさん
15/10/29 01:37:25.50 0VE0VetC.net
>>253 D言語の命名規則に則れば >>254 の言うとおり。
ただ、どうしてもと言うならこんなんはいかがか。
URLリンク(dpaste.dzfl.pl)
えーと。やっぱ242で。

264:デフォルトの名無しさん
15/10/29 10:25:47.23 xCMI4xlR.net
>>254
なるほと確かにD言語の命名規則からするとモジュール名は小文字でしたね。
でも、どうしても大きなクラスは同名の一ソースにしたいのです‥すみません。
ところでパッケージで気付かせてもらったのですが、この問題って、
クラスのソースらをルート階層に置いているからこそ起きる問題なのですね。
というわけでディレクトリを一つ掘ってパッケージ下に配置することで一応解決しました!
ただ、パッケージ下にあるソースって module パッケージ名.モジュール名 の記述は必ず必要なのでしょうか?
module文の記述が無いとルートパッケージ下として格納されてしまうようで、
module文を普段省略していた身からするとちょっと面倒に感じています。
この辺りの挙動はjavaのpackage文の踏襲かなと思うのですが、
D言語ではパッケージはディレクトリに対応すると書かれているようなので、
module文を省略しても適切なパッケージに配置してくれて良いような?
>>255
おぉ‥改名選択importというやつでしょうか。確かにこれで通りました。
import _Hoge = Hoge : Hoge; という風に変換されるんですね。
import文までコンパイル時生成できるとは、D言語きm‥素晴らしいです。
ただこの書き方ではモジュール名変更リファクタリングの際にIDEが解析しにくい気がするので
(そもそもそこまでお世話してくれるIDEは現存しないようですけれど‥)、
取り敢えずは先のパッケージへの配置法でがんばってみます。
凄いものをありがとうございました。今後の困難の際に参考にします。

265:デフォルトの名無しさん
15/11/04 15:13:08.14 L5M/yopQ.net
dmd2.069.0

266:デフォルトの名無しさん
15/11/06 23:00:00.73 XSTiM1/K.net
Error: template std.algorithm.s


267:earching.countUntil cannot deduce function from argument types !()(int[11], int), candidates are: こういうエラーが出たんですけど、countUntilに静的配列は使えないということでしょうか? Error: template instance sort!((uint a, uint b) あと、sortに無名関数を渡したらエラーが出ました。無名関数も使えないのでしょうか?



268:デフォルトの名無しさん
15/11/07 11:16:15.31 oYYknJv4.net
静的配列に対して popFront() が呼べない(初めて知った!)
だからレンジ系操作に対しては全滅に近い
ソートの方はそれだけじゃ分からんね
無名関数は使い方間違えた時にわかりづらい

269:デフォルトの名無しさん
15/11/07 15:26:06.21 k3hAw3NX.net
静的配列は要素数が変更できないからですか。
Rangeの要件を満たしてないとなると結構不便ですね。
sortはエラーメッセージがこの1行しか出ないんですよね。
シンプルな例でテストしたらコンパイルは通ったんですけど、他のコードが影響してるのかなぁ。

270:デフォルトの名無しさん
15/11/07 22:04:33.49 X4t7LIyp.net
固定長配列の全体のスライスを取って動的配列に見せかければ
ある程度のRange操作だったら固定長配列にもかけられるのでちょっと便利です

271:デフォルトの名無しさん
15/11/08 23:00:15.52 18XUDL229
静的配列に対してだったらC系の関数呼ぶとかで対応したほうが良いのでは?

272:デフォルトの名無しさん
15/11/09 04:06:00.73 PiWCufYC.net
はあ、なるほど。

273:デフォルトの名無しさん
15/11/09 04:09:17.37 PiWCufYC.net
delegateのcovariane/contravarianceはなくなったんですかね

274:デフォルトの名無しさん
15/11/14 10:33:38.52 TuAUCuHQ.net
SortedRange!(R, ((a, b) => binaryFun!less(unaryFun!transform(a),
unaryFun!transform(b))))
schwartzSort(alias transform, alias less = "a < b",
SwapStrategy ss = SwapStrategy.unstable, R)(R r)
if (isRandomAccessRange!R && hasLength!R)
{ ... }
こんなの見ても揺らがないのが真のD言語er

275:デフォルトの名無しさん
15/11/14 12:16:16.84 AP01jWaC.net
真のD言語erはそんなに書いて(書かせて)もらえることに感謝する

276:デフォルトの名無しさん
15/11/14 20:42:57.89 uWuWWunU.net
デバッグ用に関数名を出力したいんですけど、関数名を取得する方法はあるでしょうか?
__FILE__や__LINE__みたいな感じのが欲しいです。

277:デフォルトの名無しさん
15/11/15 00:26:31.44 4YAQhy/L.net
標準入出力をフラッシュするにはどうすればいいですか?

278:デフォルトの名無しさん
15/11/15 00:49:19.11 DVr3HCs9.net
基本的には、DではCの標準ライブラリと同等の関数をほぼそのまま薄いラッパで提供しています

279:デフォルトの名無しさん
15/11/15 01:23:34.60 4YAQhy/L.net
dout.flush()ということですか。
writeln()に対応するものはないんでしょうか?

280:デフォルトの名無しさん
15/11/15 02:08:17.69 4YAQhy/L.net
stdout.flush()でできました。

281:デフォルトの名無しさん
15/11/15 07:41:57.52 ndJn5r2D.net
>>267
__FUNCTION__ も使える
日本語訳サイトは古すぎるから
英語サイトも必ず併用すべき

282:デフォルトの名無しさん
15/11/15 14:56:12.51 4YAQhy/L.net
>>272
関数名の取得もあったのですね。
英語苦手だけど見ないとだめですね。

283:デフォルトの名無しさん
15/11/15 15:01:11.74 4YAQhy/L.net
自作のプログラムを実行すると毎回同じ場所でobject.Error: Access Violationが発生します。
エラーとは関係なさそうな修正(stderr.writeln()を増やしたり減らしたり)をするとエラー発生の場所が変わったり、
InvalidMemoryOperationErrorに変わったりします。
エラーの原因がさっぱり分からないんですけど、どういうことが考えられるでしょうか?

284:デフォルトの名無しさん
15/11/15 15:29:26.30 r8bN


285:QIop.net



286:デフォルトの名無しさん
15/11/15 16:21:30.07 4YAQhy/L.net
GCのある言語でメモリリークとなると、どういうケースがあるのか想像がつかないです。
エラー発生の場所も変わるので謎です。

287:デフォルトの名無しさん
15/11/15 17:04:42.06 PV6fOtMt.net
GCのリーク以外に
確保してない場所に書き込むのもリークって言わない?

288:デフォルトの名無しさん
15/11/15 17:07:38.68 lu/bgS1P.net
こマ?初めて聞いたその結び付け
リーク=解放処理漏れ 以外の認識ないわ

289:デフォルトの名無しさん
15/11/15 17:19:50.76 4YAQhy/L.net
newする前のクラスのインスタンスの関数を使ってAccess Violationが出たことは過去にありますね。
しかし、今回はちゃんとnewされているし、1回目の呼び出しでエラーが発生してるわけでもないんですよね。
そして>>274で書いたようにstderr.writeln()を追加するだけでエラー発生のタイミングが変わるので難解です。

290:デフォルトの名無しさん
15/11/15 18:08:15.11 PV6fOtMt.net
初期化してない変数でアクセス

291:デフォルトの名無しさん
15/11/15 18:39:09.01 ndJn5r2D.net
AVならばぬるぽか RangeErrorか deleteの間違い
-g -debug してないんかいな
InvalidMemoryOperationError 
ならばデストラクタの中で何か変なことしてる疑い
デストラクタの中でdeleteとかしちゃダメダメよ~

292:デフォルトの名無しさん
15/11/15 18:44:09.41 zgz009B6.net
似たことなったことあるなあ。なんやったか。
templateとかmixinがらみで依存関係見落としててobjの更新忘れとか。

293:デフォルトの名無しさん
15/11/15 19:02:33.53 4YAQhy/L.net
すみませんReleaseビルドになってました。
DebugビルドにしたらRangeErrorになりました。

294:デフォルトの名無しさん
15/11/15 19:09:44.01 PV6fOtMt.net
報告乙

295:デフォルトの名無しさん
15/11/19 16:51:28.76 I2rQS35X.net
char *hoge[] = new char *[N];
scope(exit) free(hoge.ptr);
とするのと
char **hoge = cast(char **)(new char *[N]);
scope(exit) free(hoge);
とするのとでは同じ動作が期待出来ますか?
あとガベコレを期待するなら
scope(exit) free(hoge.ptr);

scope(exit) free(hoge);
もどちらも不要ですか?

296:デフォルトの名無しさん
15/11/19 23:48:30.24 kWkiLP1L.net
色々とカオス(感想)
C : malloc/free
C++: new/delete
D : new/[destroy]
GCがあるので解放は不要だが、領域が不要になったことをdestroyで明示してもよい
ただしdestroyで領域が即時解放されるわけでなく、GCが必要に応じてよしなにやる
C++のdeleteと区別するために、destroyになった(想像)
---
auto hoge = new int[][N]; // int型の動的配列をN要素もてる動的配列(二次元配列)
foreach (elem; hoge)
elem = new int[色々]; // ジャグ配列も可能
// 以下は不要(してもよい)
foreach (elem; hoge)
destroy(elem);
destroy(hoge);
---
GCを使わずmalloc/freeすることも一応可能
(今だと、std.experimental.allocatorを使うべき?)
newしたものをfreeすることに保証はないと思う、知らんけど

297:デフォルトの名無しさん
15/11/20 01:05:01.96 gniDkGmv.net
× foreach(elem; hoge)
○ foreach(ref elem; hoge)

298:デフォルトの名無しさん
15/11/20 10:48:03.85 LnAg0HCn.net
ありがとうございます!!

299:デフォルトの名無しさん
15/11/20 22:50:35.51 KMWFgUCm.net
クラスのstaticメンバ関数で、継承先の型って見られますか?
class Base {
static T[] takusanMake(T)(int n) { //Hogeから呼んでT=Hogeがほしい
T[] ret = new T[n];
foreach (ref e; ret) {
e = new T;
}
// ... Baseのフィールドしかいじらないような設定 ...
return ret;
}
}
class Hoge : Base {
}
void main() {
//Hoge
auto hoge = Hoge.takusanMake(30);
}
内容はともかく、大体こんな感じのことをしたいです
Baseから派生したクラスで定義するとか、ちゃんと!(Hoge)してもいいんですが、
(this T)を見てから何か方法があるような気がしてきて・・・

300:デフォルトの名無しさん
15/11/21 13:20:00.57 1cOWOBS


301:i.net



302:デフォルトの名無しさん
15/11/21 14:42:18.71 8z9xCqW5.net
Hoge という型と Fuga という型があって
Hoge[Fuga] hage;
という連想配列は定義できるみたいなのですが
Any という任意の型があるとして
Any[Any] moge;
みたいな連想配列は作れますか?

303:デフォルトの名無しさん
15/11/21 14:47:56.80 8z9xCqW5.net
ちなみに
["A": "B", "C": 3, 4: "E"]
みたいなのを作りたいのです

304:デフォルトの名無しさん
15/11/21 15:28:20.57 8z9xCqW5.net
Object[Object] moge = ["A": "B", "C": 3, 4: "E"];
これでだめでした orz

305:デフォルトの名無しさん
15/11/21 22:31:38.28 jpeEJ7vY.net
import std.variant;
auto moge = [Variant("A"): Variant("B"), Variant("C"): Variant(3), Variant(4): Variant("E")];
とかいうダサい感じのしか思いつかない。

306:デフォルトの名無しさん
15/11/21 23:35:17.00 BXVotCtM.net
>>290
確かにもう外に出してしまう方がいいかもしれないですね
外に出すことは考えてなかったのでもうちょっと考えてみます

307:デフォルトの名無しさん
15/11/22 12:23:27.44 rXOpUu6m.net
>>291
型付き言語に喧嘩売ってんのか

308:デフォルトの名無しさん
15/11/22 12:42:54.55 rXOpUu6m.net
>294
ダサくてよければ
Variant[Variant] constructor(T...)(T plist){
Variant[Variant] result;
foreach(ref p; plist) result[new Variant(p.keys[0])] = new Variant(p[p.keys[0]]);
return result;
}
Variant[Variant] moge = constructor(["A": "B"], ["C": 3], [4: "E"]);
試してないけど

309:デフォルトの名無しさん
15/11/22 18:10:01.30 K6EhBG35.net
引数が1個ずつ別のAAになってる…?
きもちわるすぎる

310:デフォルトの名無しさん
15/11/22 18:34:22.00 uPJ5yBy3.net
import std.variant;
import std.stdio;
Variant[Variant] makeTable(T...)(T p) {
static assert(T.length%2 == 0);
Variant[Variant] t;
foreach (i, ref v; p) {
static if (i%2 == 0) {
t[Variant(p[i])] = Variant(p[i+1]);
}
}
return t;
}
void main() {
auto t = makeTable(1, 2, "hoge", 123.2);
writeln(t);
}

311:デフォルトの名無しさん
15/11/22 19:32:11.41 QPIcOg4c.net
>>293
URLリンク(dpaste.dzfl.pl)
ま、やっぱロクなことにはならんわなあ。

312:287
15/11/22 19:46:28.38 QPIcOg4c.net
やっぱコード追加で。連投御免。
URLリンク(dpaste.dzfl.pl)

313:デフォルトの名無しさん
15/11/23 14:44:46.01 5yZmzCJ8.net
mixin使ったら負けな感じ半端ない

314:デフォルトの名無しさん
15/11/23 23:06:50.39 zlo1l7ot.net
やろうとしてること自体闇魔術臭いしわりと妥当なのかもしれない

315:デフォルトの名無しさん
15/11/24 12:03:53.42 Dj+m8Q01.net
>>297>>299 ってどちらもコンパイル時に
解決された型変換のコードが生成されるのですか?
つまり前者も後者も実行時の速度パフォーマンスは同じですか?

316:デフォルトの名無しさん
15/11/25 00:37:26.01 euvQfHeH.net
>>304
どんなコードが生成されるか知らないのでベンチとって見た結果
URLリンク(dpaste.dzfl.pl)
281: TickDuration(3595337)
284: TickDuration(9347285)
286: TickDuration(4128184)
288: TickDuration(3554533)

317:デフォルトの名無しさん
15/11/26 17:49:18.83 yeqvnwwH.net
Dでcomのclientを書こうとして付属のサンプルソースを試したら動作しました
wshサーバーをdispatchしてEcho('hoge')みたいなポップアップを出したいのですが
サンプルをどのように書き直せばよいのですか

318:デフォルトの名無しさん
15/11/26 17:58:08.82 yeqvnwwH.net
途中まで書いたコードです
extern (Windows) HRESULT CLSIDFromProgID(const wchar *, CLSID *);
const string wsh = "WScript.Shell";
interface IWSH : IUnknown {
extern (Windows) int Echo();
}
DWORD dwVer = CoBuildVersion();
HRESULT hr = CoInitialize(null);
hr = CLSIDFromProgID(wsh.toUTF16z(), &clsid);
IWSH pIWSH;
hr = CoCreateInstance(&clsid, null, CLSCTX_ALL, &IID_IUnknown, &pIWSH);
// FAILED(hr)の判定コードは省略していますがここまでは動作しているようです
// pIWSHに値は入っているようですが次の場所でAccessViolationします
pIWSH.Echo();
CoUninitialize();
pIWSH.Echo(); の行をコメントアウトすると何も起きませんが正常に完了します
あと
&IID_IUnknown
のところを
&IID_IDispatch
に書き換えてもだめでした

319:デフォルトの名無しさん
15/11/26 21:43:51.54 FqPwpLUO.net
>>307
ちょっとまだよく分かってなくてEcho呼んでも何も起きなかったけど、
PopUp呼べたので参考になりますか?
URLリンク(dpaste.dzfl.pl)

320:デフォルトの名無しさん
15/11/27 08:55:22.81 H96QzFnR.net
>>307
IDLとかタイプライブラリとか見ずに静的バインディングしようとしてる
普通は中間ヘッダを入手するかツールで生成する
C++で一度やったことがないとダメ
ちなみに >>308 は動的バインディング

321:デフォルトの名無しさん
15/11/27 09:52:51.69 c/N8jVfb.net
>>307
WScript.Shell に Echo は無いよw

322:デフォルトの名無しさん
15/11/27 10:48:43.15 Og1YQ9Di.net
>>310
うっかり勘違いしてました
標準のinterfaceから継承する方法ですが
interface IWSH : IUnknown { // add vtbl to define as IDispatch
extern (Windows) HRESULT GetTypeInfoCount(UINT *);
extern (Windows) HRESULT GetTypeInfo(UINT, LCID, REFIID);
extern (Windows) HRESULT GetIDsOfNames(REFIID, LPOLESTR *, UINT, LCID, DISPID *);
extern (Windows) HRESULT Invoke(DISPID, REFIID, LCID, WORD, DISPPARAMS *, VARIANT *, EXCEPINFO *, UINT *);
}
にして
hr = CoCreateInstance(&clsid, null, CLSCTX_ALL, &IID_IDispatch, &pIWSH);
したら
後は >>308 さんと同じように PopUp("Hage") を Invoke 出来ました
ほんとうにありがとうございました

323:デフォルトの名無しさん
15/11/27 11:49:41.82 c/N8jVfb.net
質問です。
SysTime st = Clock.currTime();
writefln("%s", st.toISOExtString());
writefln("%s", st.toISOString());
の動作で末尾の小数点以下の数字 (hnsecs) が
7桁になるときと6桁になるときがあるみたいです。
先頭の 0 が表示されないケースがあると思ったのですが
通常の '年月日T114500.1234567' 以外に
'年月日T114500.0123456' は表示されました。
ところがたまに '年月日T114500.123456' と表示されることがあります。
つまり '年月日T114500.0123456' なのか '年月日T114500.1234560' なのか判りません。
hnsecs==0 のときにこのパターンがあるみたいなのですがみなさんのところはどうですか?
DMD32 D Compiler v2.063.2
です。

324:デフォルトの名無しさん
15/11/27 11:52:34.38 c/N8jVfb.net
ちょっと紛らわしいので一部訂正します。
x 小数点以下の数字 (hnsecs) が
o 小数点以下の数字 (total hnsecs) が
x hnsecs==0 のときにこのパターンが
o msecs==123, usecs=456, hnsecs==0 のときにこのパターンが

325:デフォルトの名無しさん
15/11/27 14:33:53.29 gmvL3Mcs.net
"年月日T114500.123456" == "年月日T114500.1234560"じゃないの?

326:デフォルトの名無しさん
15/11/27 15:13:20.37 c/N8jVfb.net
なるほど小数点以下だから末尾の0は除かれるんですね。
7桁だと思って決め打ちしない方が良いですね。

327:デフォルトの名無しさん
15/11/27 15:16:44.79 c/N8jVfb.net
Duration d = hoge - fuga;
d.total!"msecs", d.total!"usecs", d.total!"hnsecs" を使うことにします。

328:デフォルトの名無しさん
15/11/28 10:52:50.96 BU0Z8dtz.net
python の __getattr__
ruby の method_missing
javascript の __noSuchMethod__
みたいなものを期待して
D で同じようなものが有るかどうか検索したら
URLリンク(forum.dlang.org)
というやりとりが見つかりました
そこのサンプルをコンパイルしようとしたのですがエラーになります
D で opDotExp ってどう使うんですか?

329:デフォルトの名無しさん
15/11/28 11:37:36.45 3W8Apw0w.net
opDispatch()
ただし型のコントロールは引数とか名前付けとか工夫して自前で面倒を見る必要がある

330:デフォルトの名無しさん
15/11/28 16:26:20.89 pFoee08yy
動的型付け言語と一緒にしちゃいかんでしょ

331:デフォルトの名無しさん
15/11/28 17:00:55.36 OpEOTh0X.net
ないですね

332:デフォルトの名無しさん
15/11/29 18:45:48.60 DyLnKIJJ.net
import std.stdio;
class Hoge {
void opDispatch(string s)() {

333:デフォルトの名無しさん
15/11/30 20:34:23.05 SJumDZBl.net
有賀㌧

334:デフォルトの名無しさん
15/11/30 20:43:06.11 SiMJvgO4.net
IDispatch で
auto xl = Dispatch("Excel.Application");
xl.Visible = true;
auto workbooks = xl.Workbooks;
まではうまく逝くのに
auto book = workbooks.Add();
で Access Violation してしまう
何が間違ってるんだろう

335:デフォルトの名無しさん
15/12/01 02:22:06.91 Zh0/OJc/.net
Excel持ってないんであれだけど、Workbooksが返すのはコレクションらしいよ。
URLリンク(msdn.microsoft.com)
URLリンク(msdn.microsoft.com)
とか見るに、Add()はリストに追加しますよってメソッドじゃね?

336:デフォルトの名無しさん
15/12/01 08:39:45.47 yW8K+bhB.net
Add がデフォルト引数を持ってるけど引数明示したらどうなるかな
ぐぐったら xlFileFormat 列挙型 とか出てくる

337:デフォルトの名無しさん
15/12/01 20:10:30.52 9BYkXgQy.net
a.unknownproperty = hoge;
みたいなのも opDispatch!"unknownproperty"(Args args...) で書けますか?

338:デフォルトの名無しさん
15/12/01 23:55:05.63 LyUKVfDv.net
URLリンク(dpaste.dzfl.pl)
こういうこと?

339:デフォルトの名無しさん
15/12/02 04:01:42.11 53wnCEvY.net
ちょっと違う気がしますが
なんとなく方向性はわかりました

340:デフォルトの名無しさん
15/12/02 05:34:41.55 53wnCEvY.net
さっきから変な現象になりました
windows10 なのですが
import std.stdio;
int main(string[] args)
{
writefln("@");
return 0;
}
だけのファイルを d_opDispatch.d というファイル名で保存して
dmd -run d_opDispatch.d を実行しても何も表示されないので
dmd d_opDispatch.d を実行して出来た d_opDispatch.exe を
cmd.exe から実行すると UAC のポップアップが出ていることがわかりました
そのまま許可すると別の cmd.exe が開かれてその中で @ が出力されています
また d_opDispatch.exe を test.exe に rename したら UAC は出なくなりましたω
それで test_opDispatch.exe にするとまた UAC が出たので
test_op_Dispatch.exe とか op_Dis_patch.exe とか試したのですが
この二つも UAC が出てきますω
また test.exe に戻したら普通に動くようになりました
ソースのときのファイル名は関係ないみたいなので
dmd -oftest.exe -run d_opDispatch.d
でとりあえず解決は出来てるんですけど何なんですかねこれ
windows10 のブラックリストに登録されちゃってるんですか?ω
それともうちだけですか?

341:デフォルトの名無しさん
15/12/02 05:39:16.56 53wnCEvY.net
opDis_patch.exe もだめです
名前変えるだけで動かなくなります orz

342:デフォルトの名無しさん
15/12/02 06:03:46.07 J+Rb91dQ.net
UACのインストーラ自動判定によるものだね
URLリンク(sceneryandfish.withnotes.net)

343:デフォルトの名無しさん
15/12/02 08:37:40.95 nn4vPBry.net
実行ファイル名で必要権限が変わるという余計なお世話なアレか

344:デフォルトの名無しさん
15/12/02 19:11:19.07 7L3lrCLQ.net
>>331
横からですがありがとう

345:デフォルトの名無しさん
15/12/03 01:03:51.80 8SmBlBH8.net
Dのenumってどうなってんの?
名前付きだけA.B.Aとかできるのがわけわからん
URLリンク(dpaste.dzfl.pl)

346:デフォルトの名無しさん
15/12/03 01:25:39.08 y1qNQeGi.net
名前付きenumが普通に想像するようなenum
名前なしenumは常時インライン展開されてデータセクションに出力されないconstもどき、じゃなかったっけ
その上で 型.メンバ の形で使えるプロパティは 変数(定数).メンバ の形でも使えるというだけのような気がする

347:デフォルトの名無しさん
15/12/03 01:51:22.50 2XsySS+x.net
>>335
なるほど、(名前付き)enumが型という認識が不足してたのか
それなら各要素自体はprivateじゃないからアクセスもできて当然なのかな
ありがとう

348:デフォルトの名無しさん
15/12/04 09:37:05.62 prxSfFNA.net
auto hoge(T...)(T args){ return args[0] ; }
みたいな関数があるとき
呼び出し側で
auto fuga = hoge();
で呼ばれたか
auto fuga = hoge;
で呼ばれたか
どちらなのかを呼ばれた側で区別出来ますか?

349:デフォルトの名無しさん
15/12/04 11:41:34.38 qnfnKzej.net
たぶん無理
それにその辺りの仕様はふらついているので
今の仕様で組んでも後でダメになる可能性がある

350:デフォルトの名無しさん
15/12/04 15:12:03.13 prxSfFNA.net
call と get と set を実装して dispatch する目論見だったんですが
PyObject だと get と call の区別が微妙なんです

351:デフォルトの名無しさん
15/12/04 15:29:35.37 eLJR6e6w.net
DWT(URLリンク(github.com))を試しているのですが
Drag and Drop のサンプル(snippetxx.d)が全く見つからないので
SWT(URLリンク(www.eclipse.org))を取ってきて試すも
cannot cast expression event.data of type object.Object to string
のコンパイルエラー、cast じゃダメなので何がしかの変換が必要らしい
で、DWT の Drag and Drop はこんな感じで
動かしてるよ~という情報をお持ちの方おしえてくださいませm(_ _)m

352:デフォルトの名無しさん
15/12/04 16:03:35.97 u0bQfuw3.net
ここはみた?
URLリンク(github.com)

353:デフォルトの名無しさん
15/12/04 18:01:46.27 5R2qZuA/.net
2.069.2でDelimited Strings内にASCII以外があると怒られるよぅ
q"EOS
日本語 ← Error: character 0xa5 is not a valid token
EOS"

354:デフォルトの名無しさん
15/12/04 18:39:04.25 qnfnKzej.net
2.069の文字列処理で日本語入ってるときの挙動が変わって往生した

355:デフォルトの名無しさん
15/12/05 11:43:03.20 pK0sc289.net
>>338
とりあえず呼び出し側で
auto fuga = hoge.unknownmethodcall([]);

auto fuga = hoge.unknownproperty;
で区別することにしたらうまく別けられました
ところが今度は
hoge.unknownproperty = hage;
で代入しようと hoge class 内で
void opDispatch(string propertyname, T)(T arg){
}
と setter を定義したのですが
hoge.unknownmethodcall([]);
の方まで setter に奪われるようになってしまいました

356:デフォルトの名無しさん
15/12/05 23:07:38.68 IGesALUR.net
getterのopDispatchの戻り値を構造体でラップするとか。
URLリンク(dpaste.dzfl.pl)

357:デフォルトの名無しさん
15/12/06 13:00:28.84 OHUYOsyJ.net
ああテンプレートで呼び分けるんじゃなくて
全部まとめて一ヶ所で受けて if で分けるんですね
参考になります
ありがとうございます

358:デフォルトの名無しさん
15/12/07 22:12:53.36 yUJmRPdi.net
import std.process;
で pipeProcess とか spawnProcess とか使えるのは判ったのですが
windows で win32api の CreateProcessAsUser とか CreateProcessWithLogonW
に相当することが実行可能なモジュールはありますか?

359:デフォルトの名無しさん
15/12/07 22:30:26.17 ka6hrItk.net
標準では最低限のAPIしかないので
自分でポーティングするか拾ってくるかしましょう

360:デフォルトの名無しさん
15/12/07 22:42:24.23 yUJmRPdi.net
thx!

361:デフォルトの名無しさん
15/12/09 01:01:38.90 Iqk5klbT.net
linuxで7zip.soのbindingを書こうとしています。7zipのC++側のIUnknownが
struct IUnknown
{
STDMETHOD(QueryInterface) (REFIID iid, void **outObject) PURE;
STDMETHOD_(ULONG, AddRef)() PURE;
STDMETHOD_(ULONG, Release)() PURE;
#ifndef _WIN32
virtual ~IUnknown() {}
#endif
};
このように宣言されているのですが、Dのinterfaceでデストラクタを宣言できなくて困っています。
超その場しのぎとして、DのIUnknownの宣言のReleaseの後にダミーのメソッドを、
・2個追加することでC++で実装されたinterfaceをDから呼び出すことが、
・1個追加することでDで実装されたinterfaceをC++から呼び出すことが、
それぞれできたのですが、とてもまともな解決策とは思えません。
どうすべきでしょうか。

362:デフォルトの名無しさん
15/12/09 06:33:38.56 wRgo2YTq.net
クソして寝ればいいと思うよ

363:デフォルトの名無しさん
15/12/09 09:39:07.56 3EPxHLPC.net
7zip
URLリンク(www.kmonos.net)
ここの最後

364:デフォルトの名無しさん
15/12/09 10:05:46.43 IXqPU77s.net
winじゃなくてlinuxでやりたいみたいよ
一晩寝たら 空のデストラクタなんていらなかったんや
って気づくかもしれない

365:336
15/12/09 18:59:13.67 bSTrBSEY.net
>>351-353 クソして寝ましたが、仮に空(とはいえvirtual)のデストラクタがまるで無意味だったとしても、
bindingの体をとっているのでp7zip側のコードを変えるのはちょっと。
むしろvtblのズレが336程度の単純さならばソレで行くかと。
気になるのはDから呼ぶ場合とC++から呼ぶ場合の非対称性ですが、こういうもんなんですか?

366:デフォルトの名無しさん
15/12/09 19:32:29.57 sRhtlXMa.net
C++ネイティブの呼び出しっていつから「ちゃんと」できるようになったんですか?(小声)

367:336
15/12/09 20:30:12.63 bSTrBSEY.net
あ、非対称っていうのは勘違いだったかもごめ。
URLリンク(dpaste.dzfl.pl)
これで解決や!どうもありがとう!
>>355 WindowsでCOMを使った7zipのbindingはもっとすんなりいきましたよ。

368:デフォルトの名無しさん
15/12/10 12:53:37.73 gg94mj0B.net
Dで書かれた2chブラウザって何かあったっけ

369:デフォルトの名無しさん
15/12/11 10:36:51.24 Q/bqtNpc.net
振りかな?

370:デフォルトの名無しさん
15/12/11 11:05:46.98 DzIPXkfp.net
URLリンク(qiita.com)
Advent Calendar 2015
まだ若干の空席がございます

371:デフォルトの名無しさん
15/12/11 16:50:35.23 W1u3sjBk.net
URLリンク(qiita.com)
こっちのほうが盛り上がってる感じでちょっと笑う

372:デフォルトの名無しさん
15/12/12 00:05:16.62 bvgCihgqp
き、記事内容はdlangの方が充実してるし…


25日過ぎても埋まってなかったらネタ記事ぶち込んでも怒られないかな?

373:名無しさん@そうだ選挙に行こう
15/12/14 11:06:28.62 baKxaSGv.net
自分のクラス(Fuga)を定義していて string へ変換するときに
Fuga f("hage");
string hoge = f;
みたいな


374:書き方をしたいのですが どんなメソッドを作っておけば良いのですか?



375:名無しさん@そうだ選挙に行こう
15/12/14 11:07:18.65 baKxaSGv.net
Fuga f = new Fuga("hage");
string hoge = f;
です

376:名無しさん@そうだ選挙に行こう
15/12/14 14:25:36.75 ilKRKXII.net
class Fuga {
private string s_;
this(string s) { s_ = s; }
alias s_ this;
}

377:名無しさん@そうだ選挙に行こう
15/12/14 14:30:09.48 baKxaSGv.net
alias s_ this; とは驚きですが
Fuga f = new Fuga("123");
int i = f;
としたときでも i に 123 が入るようになりますか?
条件後出しですみません

378:名無しさん@そうだ選挙に行こう
15/12/14 14:33:32.26 baKxaSGv.net
ちなみに
Fuga f = new Fuga("123");
string s = f; // なら s = "123"; と同じ
int i = f; // なら i = 123; と同じ
という意味です
これも alias だけで出来てしまうんでしょうか?

379:名無しさん@そうだ選挙に行こう
15/12/14 15:09:08.43 2JSVZtRY.net
そういうのはたいてい変数に移して終わりじゃなくて、その先があるでしょ
例えば関数に渡すならその関数をテンプレートでうまくまとめるのが D流
単に出力するだけなら writeln(f)

380:名無しさん@そうだ選挙に行こう
15/12/14 17:11:34.59 reTGASBb.net
ここを参考に
URLリンク(www.kmonos.net)
Win32API を使って drag & drop を実装してみたところ
case WM_DROPFILES: の中で
HDROP dr = cast(HDROP)wp;
TCHAR[] buf = new TCHAR[MAX_PATH];
int l = DragQueryFile(dr, 0, buf.ptr, buf.length);
if(l < buf.length) buf[l] = 0;
string bs = to!string(buf[0..l]);
version(Unicode){
writefln("0: %s", to!string(bs.toMBSz()));
string name = bs;
}else{
writefln("0: %s", bs);
string name = fromMBSz(bs.toStringz());
}
writefln("1: %s", name);
とすると
drag & drop したファイル名が 「森鷗(環境依存文字2)外��(環境依存文字3)る.ext」 のとき
最後の name の表示が -version=Unicode したときとしないときで結果が違います
toMBSz と fromMBSz とで不可逆なのは判るのですが
MBSz -> UTF8 するときも結果が違うのは何故でしょうか?
(ただし表示は違うのですが同じファイルが対象になってちゃんと動作します)

381:名無しさん@そうだ選挙に行こう
15/12/14 17:23:00.56 reTGASBb.net
文字化けしてるので補足
環境依存しない方の文字はこちらです
森鴎外叱る
2 鷗外
3 ��る
がそれぞれ環境依存文字です
この辺が関係ありそうなのですが fromMBSz のバグなのか何なのかよく判りませんでした
URLリンク(msdn.microsoft.com)
URLリンク(download.microsoft.com)

382:デフォルトの名無しさん
15/12/14 21:06:28.36 uspa+zNB.net
>>366
Multiple AliasThisを使えば可能
もちろんコンストラクタ内で変換して保持とかする必要はあるけど

……なので実装されるのを楽しみに待っててくれよな!

383:デフォルトの名無しさん
15/12/15 04:33:41.61 iPeNyqfl.net
>>368 SHIFT-JISに含まれてない文字だから仕方ないとおもわれ。
DragQueryFileAの方ではかわりに 63(ASCIIのハテナマーク)が送られてきてる。
A付関数のことなんて早く忘れるんだ!

384:デフォルトの名無しさん
15/12/15 09:35:34.07 GmzcEDm2.net
string valueOf(){ return s_; }
int valueOf(){ return to!int(s_); }
alias valueOf this;

385:デフォルトの名無しさん
15/12/15 09:37:35.44 GmzcEDm2.net
>>371
不思議なのは *A バージョンの方でも正常に動作してるって所なんだよね

386:デフォルトの名無しさん
15/12/15 09:57:14.35 ax++RPg4.net
上は Utf16->Utf8->SJIS で余計な変換してるからじゃないの

387:デフォルトの名無しさん
15/12/18 01:01:03.51 fYXmJuMp.net
>>373
A版の内部処理でことごとく文字化けしてる�


388:ゥら 文字化けしたファイル名がマッチするせい



389:デフォルトの名無しさん
15/12/18 17:04:11.83 mbvyIjbK.net
>>375
わたしもそう思ったんですが
出来上がった hoge.7z ファイルの中の
ファイル名は文字化けしておらず正常なんです

390:デフォルトの名無しさん
15/12/20 01:09:48.99 VpDH1DV/.net
>>376
?が1文字マッチのワイルドカードってのは関係してない?

391:デフォルトの名無しさん
15/12/20 11:01:49.72 8RLYRFXT.net
>>372
出来ました
ありがとうございます

392:デフォルトの名無しさん
15/12/20 17:10:30.71 uT5SbDNR.net
あれ、戻り値だけ違う関数ってオーバーロードできたっけ?

393:デフォルトの名無しさん
15/12/21 12:10:28.67 ayhLnjzU.net
宣言はできるけど使えない
左辺値から型推論とかしてくれると嬉しいんだけどね

394:デフォルトの名無しさん
15/12/21 14:13:11.66 1HvlxK+M.net
T valueOf(T)(){ return to!T(s_); }
これもうまくいかんな

395:デフォルトの名無しさん
15/12/22 23:01:04.25 RP62Thfp.net
明示cast必須になるけど
T opCast(T)(){ return s_.to!T; }

396:デフォルトの名無しさん
15/12/23 08:52:41.01 2F8TsTF+.net
alias hoge this; しなくてよくなるからありがたいね

397:デフォルトの名無しさん
15/12/23 10:13:41.06 1VnhNGH+.net
明示的キャスト滅すべし


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch