java 板


※ 引述《[email protected] (benqer)》之铭言: > script 是着重在runtime的动态, 弹性很大, 但相对来说型别的使用一有错误, > 会在runtime出现无法预期的错误, 这种错误很难debug. 这就是为何type-safety重要 > 的原因. > 泛型则是着重在compile-time的动态, 型别在compiler-time具现时一旦有错, > 也只是compile-time error, 够格的compiler都能够直接指出错在哪里. 不需要 > 等到runtime再来debug. 很赞同 Wiseman 所言。 但我现在想说的,是一个发展方向,而不是现状。 严格的型别定义,与编程弹性,一直使编译器有很大的困扰,但并非不可解决。 我举两个简单的例子,第一个例子是导引,第二个例子是深入。 导引范例: int fa(int x) { if (x % 1) { cout << "Yes!"; return 1; } else { cout << "No!"; return 0; } } 我一直希望 C/C++ 能够把他化简成 function fa (x) { if (x % 1) { cout << "Yes!"; return 1; } else { cout << "No!"; return 0; } } 提问一: 或许有人说,那怎麽知道要 return 什麽呢? 这就是编译器的工作了,编译器负责检查「回传型态的一致性」。 如果回传型态具有一致性,那就应该要知道回传什麽了吧。 提问二: 那怎麽给定 x 的型态? 这也是编译器的工作。目前不是发展了 template 技术吗? 把他想成隐式 template 不就达成了。 不过编译器会很累,必须要检查该型别是否满足所有算子(甚至成员)。 不过要满足上述两项功能,自动型别转换有必要作检讨。 深入范例:(很重要的编程风格范例) 尝试思考下面这个例子: function dynamic (x) { if (x % 1) return Bicycle(x); else return Car(x); } 这可好了,编译器该如何做?我尝试着将上面的函式翻译成 C++ 解法一:使用基础类别再加以继承之。 class CC { …略… } ; class Bicycle : CC { …略… }; class Car : CC { …略… }; template<class T> CC * dynamic(T x) { if (x%1) return new Bicycle(x); else return new Car(x); } 解法二:利用 union 此法建议在两者所使用的空间差异不大时使用, 此解法还必须使这三个先备类别支援 (type &) 建构子才行 struct UBC { char * style_name; union cont { Bicycle b; Car c; }; } template<class T> UBC dynamic(T x) { if (x % 1) return (UBC) {"bicycle", Bicycle(x)}; // C99 新增语法 else return (UBC) {"car", Car(x)}; } 天啊!一个简洁的编程样式,翻译成 C++ 居然要如此的麻烦! 用了 script 之後的小小感想。这并不是理论上的困难,而是技术量太大。 -- ┌─────程式设计乐园─────┐  ̄ ▌ ̄ ╲╱ BBS 城邦 CSZone.kkcity.com.tw ╴ ▌ ▌ ▏ KK免费拨接 └──From:61.231.190.51 ──┘ 电话:449-1999 帐号:kkcity 密码:kkcity







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草
伺服器连线错误,造成您的不便还请多多包涵!
「赞助商连结」






like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP