#体验华为仓颉编程语言#
仓颉发布的第一时间,就申请了测试。昨天发现申请通过 ,果断下载SDK体验一下。
废话不多说,从下载完开始,下面这个图,就是下载的文件:
看文件夹样子跟c/c++套路差不多。bin目录是cjc.exe所在目录。runtime是运行时所需的dll文件夹。lib为编译时的库文件。modules是各种库的文件夹,类似lib文件夹。另外应该是第三方的一些东西,我看了一下,有gcc,有clang的一些基础库。不过这些都不重要。
首先还是设置环境变量,根目录下面有一个envsetup.bat,尝试双击运行,以及管理员方式运行后,发现并没有啥卵用。
所以还是手动来吧,这个文件里面,建议创建一个CANGJIE_HOME的环境变量,这点类型JAVA_HOME。实际不这样设置也行。不过还是按照他们建议来。
在设置环境变量之前,cjc运行是报错的。
创建CANGJIE_HOME,以及添加仓颉的bin文件到path里面。
这个时候cjc可以运行了,也就是说可以编译了。到这一步还是挺简单的。接下来写个hello world。
接下来是编译,cjc t.cj -o t.exe. 这里需要说明这个跟命令跟GCC一模一样。
接下来运行t.exe
弹出提示,缺少dll,原因是没有吧运行环境加到path里面。一般gcc项目,gcc和运行库是放在一块的,仓颉是分开的,所以需要再增加一个path,就是运行环境。见下图:
注意设备完环境变量,cmd需要关掉再打开一次。
再次运行,可以输出hello world。
为啥不用网上的仓颉编程插件,以及一次性配置好两个path呢。因为那样逼格不够高,废话多一点显得比较专业。
现在环境弄好了,就仓颉开放一个http服务器吧,大致功能,启动一个http服务,可以供浏览器浏览静态页面。app启动的时候,读取配置文件,配置文件主要是配置http服务端口,以及html所在的路径。就像下面这样:
首先需要写一个配置文件类,读取这个配置文件。解析文件内容,生成配置。代码如下,目前csdn还不支持cangjie语法好像。
这个代码是一遍看官方文档,一遍摸索出来。相关资料太少,官方给的案例也不多,例如找按行读取文件,就找不到。
/**
*配置文件类
*/
class Config
{
let map:HashMap<String,String>=HashMap<String,String>() //存储配置文件的map
public init(){
let datas=File.readFrom("./config.ini") //读取当前目录下面的config.ini
let bs=ByteArrayStream() //创建一个ByteArrayStream
bs.write(datas) //把配置文件的内容,写入到字节流
let sr=StringReader(bs) //创建一个字符串流读取对象
var s=sr.readln()??"" //读取一行,如果没有内容就是空
while(s.size>0){ //如果这一行有数据
let a=s.split("=") //对这一行分割 key = value
map[a[0]]=a[1] //a[0]是key ,a[1]是value,存储到hashmap
s=sr.readln()??"" //读取下一行
}
println(map) //输出一下
}
public func getString(key:String):String{ //获取一个字符串配置
return map[key]
}
public func getInt(key:String):Int32{ //获取一个整数配置
return Int32.parse(map[key]) //字符转换为整数
}
}
主函数调用一下:
main()
{
println("cangjie http")
let cfg=Config() //创建config对象
let port=cfg.getInt("port") //获取整数
let dir=cfg.getString("dir") //获取字符串
println("Server port = ${port}") //输出,这个输出功能有点像php
println("HTML dir = ${dir}")
}
编译运行如下:
下一篇写启动http和响应请求。