Skip to content

HimDSL v4.0

Latest

Choose a tag to compare

@HimxhMC HimxhMC released this 05 Sep 19:04
b6bf12a

新增功能:
1 自由监听
监听Bukkit原生事件 举例 @EventHandler void doSome(event(AsyncPlayerChatEvent)) {}
监听任意插件 事件 举例 @EventHandler void doSome2(event("完整的类路径")) {}
-这会尝试直接用Class forName来加载它。

2多范式
现在数据结构函数可以支持双范式和混合使用。
int main(){
var st = stack();
st.push(10).push(20);
var top = st.pop();
var empty = st.isEmpty();

var q = queue();
q.offer(1).offer(2);
var val = q.poll();

var m = map();
m.put("key1", 100).put("key2", 200);
var value = m.get("key1");

var v = vector();
v.add(5).add(6);
var first = v.get(0);
var size = v.size();

var ss = set();
ss.add(1).add(2);
var has = ss.contains(1);

var str = "Hello";
var upper = str.toUpperCase();
var replaced = str.replace("l", "x");

runcmd("CONSOLE","say "+top+" "+empty+" "+val+" "+value+" "+first+" "+size+" "+has+" "+upper+" "+replaced);
}

3字符串操作
为了让C++开发者舒服,允许直接修改,
底层是String和char[]互转。
struct Person {
string name;
};
int main(){
var str = "Hello";
str[0] = 'h'; // 变为 "hello"
str[4] = 33; // 变为 "hell!"
Person p;
p.name = "Alice";
p.name[0] = 'X'; // 变为 "Xlice"
runcmd("CONSOLE","say "+str+" "+p.name);
}

4文件操作
可以打开,读全部,读某一行,写入,删除,寻找是否存在

int main(){
var handle = fopen("test.txt", "w");
fwrite(handle, "Hello, World!\n");
fwrite(handle, "第二行");
fclose(handle);

var h2 = fopen("test.txt", "r");
var content = fread(h2);
runcmd("CONSOLE","say "+content);
fclose(h2);

var lines = freadlines("data.txt");
fwritelines("output.txt", lines);

if (fexists("config.json")) {
fdelete("config.json");
}
}

** 性能测试 **
在纯递归无缓存的情况下计算fib(25)耗时:
0.6s-0.8s
压栈可达300层左右。