[App Sharing] 自制编程语言KyLin: BaseMap数据集合的原理
Tofloor
poster avatar
deep-dark
deepin
2024-03-31 13:27
Author

KyLin 是一款基于Jvm的跨平台高效的编程语言。面相对象和面向过程都是可以的,直译式编程语言 其特点就是快速高效简单,语法设计降低或者避免写出像shit一样的代码,代码就像诗一样优美 同样,其设计成函数式,而且避免套嵌的写法,完全利用函数的调用,代码可读性十分的高,而且运行安全,基于Jvm,jvm有强大的内存安全管理机智。

  • 项目地址: https://github.com/LinWin-Cloud/kylin-language
  • 开发地址: https://gitee.com/LinWin-Cloud/kylin-language

BaseMap是什么

KyLin编程语言内置的数据集合类库,类似于Java TreeMap.

BaseMap基础

  • basemap是一个类似于Java的treemap,python dict的一个数据集合系统。用于存储key value对应数据的系统。
  • basemap 最高存储 2^31-1 对 key-value
  • basemap 算法纯kylin编程语言实现
  • basemap 是有序的
  • basemap 可以将 kylin 数据结构转换成 json.
  1. add(key , value) 方法
    向map插入 张三-13 , 李四-14
import "basemap"
var map = new(basemap)
map.add("张三" , 13)
map.add("李四" , 14)
  1. get(key) 方法
    从 map中获取 张三
import "basemap"
var map = new(basemap)
map.add("张三" , 13)
map.add("李四" , 14)

# 获取数据
print(map.get("张三"))
  1. to_str() 方法
    将 basemap 数据结构转换成字符串
import "basemap"
var map = new(basemap)
map.add("张三" , 13)
map.add("李四" , 14)

#转换成 字符串
print(map.to_str()) 

# 输出的 字符串
# {张三=13 , 李四=14}
  1. to_json() 方法
    将 basemap 数据结构转换成 json
import "basemap"
var map = new(basemap)
map.add("张三" , 13)
map.add("李四" , 14)

#转换成 字符串
print(map.to_json()) 
# 输出的 json结构
# {
#    "张三" : "13",
#    "李四" : "14"
# }
BaseMap源代码原理

#
# -basemap application-
# author: LinWin-Cloud
# write by: 2024.2.27
# basemap is a base lib in kylin programing language.
# you can use basemap to add a lot of dom to this map and get.

class basemap: public
    public list_dom_key = list()
    public list_dom_value = list()

    func add(key,value) public
        #
        # add the key and value to the map.
        # write by kylin.
        #

        # print("Input=",key," ; Value=",value)
        list_add(list_dom_key , key)
        list_add(list_dom_value , value)
    end_func

    func get(key) public
        #
	# get the value from basemap
        # the basemap likes java hashmap.
        #
	var index_key = index_list(list_dom_key , key)
        return list_dom_value[index_key]
    end_func

    func rm(key) public
        var index_key = index_list(list_dom_key , key)
        list_rm(list_dom_key,index_key)
        list_rm(list_dom_value,index_key)
    end_func

    func map_to_str() private
        var len = length(list_dom_key)
        var i = 0
        var s = "{ "
        f view_list()
            var key_name = list_dom_key[i]
            var value_name = list_dom_value[i]
            var one_dom = key_name , "=" , value_name, " , "
            val s = s , one_dom
            val i = i + 1
        e_f
        for (view_list() , len)
        val s = sub(s , 0 , lastindex(s , ","))
        val s = s , "}"
        return s
    end_func

    func to_str() public
        var r = ""
        err on_error(e) 
            val r = "{}"
        e_err
        f run_map_str()
            val r = map_to_str()
        e_f
        except(run_map_str() , on_error())
        return r
    end_func

    func to_json() public
        var len = length(list_dom_key)
        var i = 0
        var s = "{ \n"
        f view_list()
            var key_name = list_dom_key[i]
            var value_name = list_dom_value[i]
	        var one_dom = "    \'",key_name,"\'"," : ","\'",value_name,"\'",",\n"
            val s = s , one_dom
            val i = i + 1
        e_f
        for (view_list() , len)
        val s = sub(s , 0 , lastindex(s , ","))
        val s = s , "\n}"
        return s
    end_func
end_class

这些函数都是kylin内置然后实现的,本质上是创造两个数组,这两个数组都是动态的,key数组的索引与value数组的索引是对应的,实现了最基础的数据集合

Reply Favorite View the author
All Replies
dgmenghuan
deepin
2024-04-01 08:52
#1

为啥这玩意跟python这么相似呢,map.add("张三" , 13),这和python的图表这么的像呢?

Reply View the author
deep-dark
deepin
2024-04-04 02:38
#2
dgmenghuan

为啥这玩意跟python这么相似呢,map.add("张三" , 13),这和python的图表这么的像呢?

kylin本来就是借鉴了很多的编程语言的

Reply View the author