仓颉编程入门

#体验华为仓颉编程语言#

仓颉发布的第一时间,就申请了测试。昨天发现申请通过 ,果断下载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语法好像。

这个代码是一遍看官方文档,一遍摸索出来。相关资料太少,官方给的案例也不多,例如找按行读取文件,就找不到。

cpp 复制代码
/**
*配置文件类
*/
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])                             //字符转换为整数
        
    }
}

主函数调用一下:

cpp 复制代码
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和响应请求。

相关推荐
攒了一袋星辰1 个月前
仓颉编程语言入门 -- Socket 编程与HTTP 编程概述
网络·网络协议·http·仓颉
攒了一袋星辰1 个月前
仓颉编程入门 -- 泛型概述 , 如何定义泛型函数
仓颉
jason成都1 个月前
开启仓颉编程
仓颉
攒了一袋星辰1 个月前
仓颉编程入门 -- if 表达式使用详解
仓颉·cangjie
chinusyan2 个月前
仓颉语言 -- 网络编程
开发语言·仓颉·仓颉语言·cangjie
Android技术栈2 个月前
鸿蒙仓颉语言【在工程中使用Redis仓颉语言客户端】
redis·程序员·harmonyos·arkts·鸿蒙·openharmony·仓颉
华为云开发者联盟2 个月前
仓颉编程语言技术指南:嵌套函数、Lambda 表达式、闭包
鸿蒙·编程语言·华为云开发者联盟·仓颉
chinusyan2 个月前
仓颉语言 -- 泛型
仓颉·仓颉语言
Android技术栈2 个月前
鸿蒙仓颉语言之【安全密码库crypto4cj】功能示例
安全·程序员·harmonyos·鸿蒙·鸿蒙系统·openharmony·仓颉