您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)如何實現(xiàn)Drag語言設(shè)計 ,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
drag虛擬機,類似python虛擬機、java虛擬機。
當(dāng)類實現(xiàn)dynamic接口時,那么這個類支持動態(tài)添加屬性和添加方法的操作。否則,這個類會在編譯時檢查操作是否合法。
類似去掉java的原生類型。
Object DynamicBooleanByteIntegerLongFloatDoubleString Map List
區(qū)分Float和Double采用數(shù)字后面使用_d或_f 區(qū)分Integer和Long采用數(shù)字后面使用_i或_l
Integer a=10;也可以a=10; 不定義引用類型時,默認(rèn)是Object類型。
public class A{ void printString(){ print("str"); } }public class A void printString() print("str");
沒有swith,沒有while
//普通版if(){}else if(){}else{}//簡寫版if(){}ef(){}el{}
for(Boolean)//類似whilefor(Var;Boolean;Increment)//正常的forfor(Var in Iterator)//類似python
goto只能在方法內(nèi)使用,且只能往后goto到一個標(biāo)記處。 類似java的break 標(biāo)簽,但不限于在循環(huán)內(nèi)使用。
[String] ss=["str1","str2"];for(s in ss) if(s=="str2") goto A print("run...");//這句代碼會被跳過:A//跳到這里
String s="ss sssss ";
同java,但單行支持#
同java,但不能使用$
默認(rèn)10進制 2進制:數(shù)字開頭使用28進制:數(shù)字開頭使用816進制:數(shù)字開頭使用16_ 以此類推。
public static String,Integer getInfo() return "zs",10;public static main(List s) String name,Integer age=getInfo();
類似java的list
數(shù)組的定義(泛型寫法)List<String> array=new List();//如果在構(gòu)造方法new List(Integer);傳入?yún)?shù)則可以固定數(shù)組長度List<String> array=new List<String>();List<String> array=["str1","str2"]; [String] array=new List(); [String] array=new List<String>(); [String] array=["str1","str2"]; 數(shù)組的定義(非泛型寫法,效果等于[Object])List array=new List();List array=new List<String>();List array=["str1","str2"]; [] array=new List(); [] array=new List<String>(); [] array=["str1","str2"];
使用:
[String] array=["str1","str2"]; String v=array[0]; String v=map.get(0);
字典的定義(泛型寫法)Map<String:Integer> map=new Map();//如果在構(gòu)造方法new Map(Integer);傳入?yún)?shù)則可以固定字典長度Map<String:Integer> map=new Map<String:Integer>();Map<String:Integer> map={"key1":10,"key2":20} {String:Integer} map=new Map(); {String:Integer} map=new Map<String:Integer>(); {String:Integer} map={"key1":10,"key2":20} 字典的定義(非泛型寫法,效果等于{Object:Object})Map map=new Map();Map map=new Map<String:Integer>();Map map={"key1":10,"key2":20} {} map=new Map(); {} map=new Map<String:Integer>(); {} map={"key1":10,"key2":20}
支持一個key對應(yīng)多個value
{String:Integer:Integer} map={"key1":10:11,"key2":20:21}
使用:
{String:Integer} map={"key1":10,"key2":20}Integer v=map["key1"];Integer v=map.get("key1"); {String:Integer:Integer} map={"key1":10:11,"key2":20:21}Integer v1,Integer v2=map["key1"];Integer v1,Integer v2=map.get("key1");
默認(rèn)一個普通的類就是靜態(tài)類(相對于動態(tài)類來說)。 定義靜態(tài)類型類:
class A{ }
使用靜態(tài)類型對象:
A a=new A(); a.name="tzc"//編譯錯誤A沒有a屬性a=new A(); a.name="tzc"//編譯錯誤Object沒有a屬性
使用interface關(guān)鍵字定義。
interface A{ }
或者:
interface class A{ }
接口是特殊的類。 方法都是實例的公有的,沒有屬性,必須繼承才能new。
使用constant關(guān)鍵字定義。
constant A{ }
或者:
constant class A{ }
常量類是特殊的類。 屬性、方法都是靜態(tài)的,不能被繼承。
使用final關(guān)鍵字定義。
final A{ }
或者:
final class A{ }
終態(tài)類是特殊的類。 不能被繼承。
final關(guān)鍵字基本同java,但可以有以下用法:
{String:Integer} map=final {"key1":10,"key2":20}//map里的值不能修改,也不能添加和刪除元素[String] array=final ["str1","str2"]//array里的值不能修改,也不能添加和刪除元素Student stu=new final Student("zhangsan",20);//stu里的屬性不能修改,也不能添加和刪除屬性
使用dynamic關(guān)鍵字定義。
dynamic A{//這樣定義表示該類實現(xiàn)Dynamic接口}
或者:
dynamic class A{//這樣定義表示該類實現(xiàn)Dynamic接口}
或者實現(xiàn)Dynamic接口:
class A implement Dynamic{ }
動態(tài)類是特殊的類。 能避免編譯類型檢查。
使用動態(tài)類型對象:
A a=new A(); a.name="tzc"//編譯并運行正確Dynamic a=new A(); a.name="tzc"//編譯并運行正確a=new A(); a.name="tzc"//編譯錯誤Object沒有a屬性
class A{ } a=new dynamic A();//如果A沒有實現(xiàn)Dynamic那么a是一個實現(xiàn)A并且實現(xiàn)Dynamic的子類的對象,相當(dāng)于創(chuàng)建了一個匿名類。a.name="tzc"//編譯并運行正確a=dynamic 10;//a是一個繼承Integer并且實現(xiàn)Dynamic的子類的對象a=dynamic String;//a是一個繼承String并且實現(xiàn)Dynamic的子類的對象
基礎(chǔ)版的API類似JavaSE 高級版的API類似JavaEE
關(guān)于如何實現(xiàn)Drag語言設(shè)計 就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。