青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

qiezi的學習園地

AS/C/C++/D/Java/JS/Python/Ruby

  C++博客 :: 首頁 :: 新隨筆 ::  ::  :: 管理 ::
這個版本實現了計劃已久的數組直接量。

import?std.stdio;

void?main(){
??{
????static?
int[]?arr?=?[1,2,3,4,5];
????writefln(typeid(typeof(arr[
0])));
????writefln(arr);
??}
??{
????static?float[]?arr?
=?[1f,1,3,4,5];
????writefln(typeid(typeof(arr[
0])));
????writefln(arr);
??}
??{
????static?char[][]?arr?
=?["1","2","3","4","5"];
????writefln(typeid(typeof(arr[
0])));
????writefln(arr);
??}
}

數組類型由第1個元素類型決定,類型不匹配將會產生編譯錯誤。

接著是多維數組:

import?std.stdio;

void?main(){
??static?
int[][]?arr?=?[[1,2,3,4],?[4,5,6],?[7,8]];
??
foreach(int[]?sub;?arr){
????
foreach(int?i;?sub){
??????writefln(i);
????}
??}
}


另一個特性是更強的typedef。原有的typedef強類型在某些情況下會產生混亂。

下面的代碼摘自 http://www.digitalmars.com/pnews/read.php?server=news.digitalmars.com&group=digitalmars.D.bugs&artnum=3843

import?std.stdio;

typedef?
int?Int1;
typedef?
int?Int2;

void?show(Int1?v)?{
?????writefln(
"Int1:?%d",?v);
}

void?show(Int2?v)?{
?????writefln(
"Int2:?%d",?v);
}

void?show(
int?i)?{
?????writefln(
"int:?%d",?i);
}

void?show(long?l)?{
?????writefln(
"long:?%d",?l);
}

void?main()?{
?????Int1?value1?
=?42;
?????Int2?value2?
=?69;

?????show(value1?
+?value2);
?????show(value2?
+?value1);
?????show(
2?*?value1);
?????show(value1?
*?2);
?????show(value1?
+?value1);
?????show(value2?
-?value2);
?????show(value1?
+?2);
?????show(
3?+?value2);

?????long?l?
=?23;
?????show(value1?
+?l);
?????show(l?
+?value2);

?????short?s?
=?105;
?????show(s?
+?value1);
?????show(value2?
+?s);
}

如上面代碼所示。typedef定義出來的類型和原有類型的相同形式重載函數可以共存,這可以完成更強類型的重載,C++的重載還不能實現這個。

這個強類型的typedef好像原本就支持,大概是運算結果類型比較模糊。

好處是顯頁易見的。比如有一個Time和TimeInterval類型,它用來表示絕對時間或相對時間間隔;另有一個輸出函數用來顯示結果。

import?std.stdio;
import?std.string;

typedef?long?
Time;
typedef?long?TimeInterval;

void?output(
Time?t){
??writefln(
"Time:?"?~?toString(cast(long)t));
}
void?output(TimeInterval?t){
??writefln(
"Interval:?"?~?toString(cast(long)t));
}
void?main(){
??
Time?time?=?cast(Time)100;
??TimeInterval?interval?
=?cast(TimeInterval)100;
??output(
time);
??output(interval);
}

是的,使用上麻煩了很多,因為我們試圖用一個數值類型去表示多個矢量類型。

這里Time time = cast(Time)100不再只是100這個簡單的數值,它還攜帶了Time這個類型。TimeInterval interval = cast(TimeInterval)100也不只是100這個數值,我們給它賦予了時間間隔的含義。

還可以想像得更開闊一些,用它定義時間、長度、面積、加速度、速度、溫度等,重載一些計算函數(可惜D還不支持全局操作符重載),這樣就方便完成一些物理量的運算了,而且類型得到檢查,速度加一個整數值結果還是速度,速度乘時間得到的是長度,時間減時間得到的是時間間隔,速度加時間將產生編譯錯誤。。。。。。神奇的是這些類型可能都是一些簡單類型,我相信它至少可以保證運行效率不會太低。當然你用C++類也可以完成這些,并且利用編譯器優化讓它的效率保持最高,甚至內聯的結果就是簡單類型的運算,我還是更愿意使用這簡單的類型來typedef。當然這可能需要寫大量重復的函數重載形式,沒有關系,我想使用模板和mixin應該可以簡化這一過程,而且會有相當多的家伙們愿意使用這種麻煩的形式來獲得更“正確”的編譯檢查。


所以說,D語言的typedef的意義其實就是實現了矢量類型。



又多想了一點。

強類型要,語法糖也應該要。是不是可以借鑒一下ruby的語法,實現這種調用呢?

Length?l?=?1.cm;
l?
=?1.m;
Time?t?=?Time.now;
TimeInterval?i?
=?3.hours;

免去了一些初始化的麻煩。
posted on 2006-09-19 20:16 qiezi 閱讀(592) 評論(2)  編輯 收藏 引用 所屬分類: D
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            免费看av成人| 激情成人av在线| 在线电影欧美日韩一区二区私密| 性感少妇一区| 午夜伦理片一区| 狠狠v欧美v日韩v亚洲ⅴ| 久久aⅴ国产紧身牛仔裤| 亚洲欧美一区二区三区久久| 国产丝袜一区二区| 欧美成年人在线观看| 欧美激情视频在线免费观看 欧美视频免费一| 亚洲国产另类久久久精品极度| 亚洲高清免费| 欧美系列电影免费观看| 国产精品美女在线观看| 麻豆久久婷婷| 日韩午夜电影av| 亚洲在线视频| 久久久久久电影| 亚洲另类自拍| 午夜精品久久久久久久久久久 | 亚洲视频第一页| 国产在线视频欧美| 亚洲日本成人网| 国产亚洲永久域名| 亚洲第一中文字幕在线观看| 国产精品swag| 免费人成网站在线观看欧美高清| 欧美日韩精品一区二区天天拍小说 | 免费欧美日韩| 欧美三级在线| 欧美bbbxxxxx| 欧美成人四级电影| 欧美成人精品高清在线播放| 一区二区三区国产在线| 先锋亚洲精品| 亚洲夜间福利| 麻豆精品视频在线| 欧美一区观看| 欧美国产日韩一区| 久久视频免费观看| 国产精品久久久久久久第一福利| 美女精品视频一区| 国产精品亚洲综合色区韩国| 亚洲国产中文字幕在线观看| 国产欧美精品一区| 中国成人在线视频| 一本色道久久综合亚洲精品小说 | 亚洲大胆人体在线| 一本久道综合久久精品| 亚洲第一精品电影| 久久福利视频导航| 狠狠入ady亚洲精品| 国产精品午夜国产小视频| 每日更新成人在线视频| 国产精品国产a级| 欧美电影免费观看高清| 国产一区二区三区在线播放免费观看 | 欧美在线免费观看| 国产精品www网站| 99re国产精品| 夜夜嗨av一区二区三区网站四季av| 久久综合九色综合久99| 久热国产精品| 136国产福利精品导航网址| 久久精品99| 免费不卡视频| 在线日本成人| 欧美高清你懂得| 亚洲激情国产精品| 亚洲激情图片小说视频| 免播放器亚洲| 亚洲理伦电影| 亚洲影视在线| 国产三级欧美三级| 久久精品日产第一区二区| 欧美一区二区精美| 韩日精品中文字幕| 老司机成人网| 99国产麻豆精品| 午夜精品福利在线| 韩国一区二区在线观看| 久久亚洲国产成人| 亚洲精品视频在线看| 亚洲视频在线观看视频| 国产精品中文在线| 久久久久久久久一区二区| 亚洲电影免费观看高清完整版在线观看 | 欧美精品色综合| 在线亚洲观看| 久久久久久免费| 亚洲三级网站| 国产精品日韩电影| 久久综合狠狠| 亚洲私人影院| 欧美成年人网站| 亚洲欧美在线看| 亚洲人成免费| 国产精品欧美经典| 麻豆91精品| 亚洲综合大片69999| 麻豆av一区二区三区久久| 亚洲精品免费观看| 国产美女精品视频免费观看| 老鸭窝91久久精品色噜噜导演| 亚洲精品你懂的| 久久久爽爽爽美女图片| 9国产精品视频| 一区久久精品| 国产精品视频内| 欧美精品一区二区三区一线天视频| 香蕉久久夜色精品国产| 在线成人国产| 国产麻豆精品久久一二三| 欧美不卡一区| 久久www成人_看片免费不卡| 亚洲精品乱码| 欧美成人a∨高清免费观看| 亚洲自啪免费| 在线综合亚洲| 亚洲日本欧美| 在线观看精品一区| 国产亚洲欧美在线| 欧美亚州一区二区三区| 欧美激情精品| 免费黄网站欧美| 久久久欧美一区二区| 亚洲欧美日韩在线不卡| aa国产精品| 99ri日韩精品视频| 日韩一区二区高清| 亚洲精品1234| 91久久精品国产| 亚洲精美视频| 亚洲精品午夜| 日韩手机在线导航| 日韩午夜电影| 日韩一级精品| 99视频有精品| 亚洲视频日本| 亚洲综合好骚| 欧美一区1区三区3区公司| 亚洲欧美精品在线观看| 午夜精品国产更新| 欧美伊人久久久久久午夜久久久久| 亚洲在线免费| 欧美一区二区三区另类| 香蕉久久夜色精品国产| 久久国产精品色婷婷| 久久久国产精品亚洲一区| 久久躁狠狠躁夜夜爽| 美女诱惑一区| 欧美日韩国产成人精品| 欧美三级视频在线观看| 国产精品免费区二区三区观看| 国产精品蜜臀在线观看| 国精产品99永久一区一区| 国语自产精品视频在线看8查询8 | 国产一区二区精品久久| 国内精品久久久久影院薰衣草| 国产资源精品在线观看| 在线看片第一页欧美| 日韩午夜激情电影| 亚洲小少妇裸体bbw| 欧美一区二区三区婷婷月色 | 亚洲一区视频| 久久久久www| 亚洲国产一区二区三区a毛片| 99热精品在线| 久久成人精品无人区| 美脚丝袜一区二区三区在线观看| 欧美成人小视频| 国产麻豆9l精品三级站| 在线欧美亚洲| 亚洲在线黄色| 欧美freesex8一10精品| 艳妇臀荡乳欲伦亚洲一区| 欧美亚洲免费| 欧美日本一道本在线视频| 国产日韩综合一区二区性色av| 伊人一区二区三区久久精品| aa级大片欧美三级| 久久久久久穴| 亚洲无吗在线| 欧美国产亚洲另类动漫| 国产日韩成人精品| 亚洲每日更新| 久久免费高清视频| 中文欧美字幕免费| 欧美粗暴jizz性欧美20| 欧美一级理论片| 欧美日韩影院| 亚洲国产精品福利| 欧美一区二区黄| 9色精品在线| 欧美大学生性色视频| 国产一区香蕉久久| 亚洲男人第一网站| 亚洲人成人一区二区在线观看| 欧美一区二区三区在线观看视频 |