CAPL中的键值对(hash)数据类型
- 🍅 我是螞蟻小兵,專注于車載診斷領(lǐng)域,尤其擅長于對(duì)CANoe工具的使用
- 🍅 尋找組織 ,答疑解惑,摸魚聊天,博客源碼,點(diǎn)擊加入👉【相親相愛一家人】
- 🍅 玩轉(zhuǎn)CANoe,博客目錄大全,點(diǎn)擊跳轉(zhuǎn)👉
📘前言
-
🍅 鍵值對(duì)(Key - Value)又名哈希(hash),各種編程語言都會(huì)有的一種數(shù)據(jù)類型,Python中叫字典,CAPL中叫 語義場聯(lián)想(Associative fields ),本節(jié)想通過Python和CAPL的角度講解下key-value的使用
-
🍅 演示軟硬件環(huán)境 Windows11 x64 ; CANoe 11 SP2 x64
目錄
- 📘前言
- 📙 CAPL和Python的簡單對(duì)比
- 🌎總結(jié)
📙 CAPL和Python的簡單對(duì)比
1?? python下是字典的數(shù)據(jù)類型,通過花括號(hào)定義,可以初始化
- 鍵一般是唯一的,如果重復(fù)最后的一個(gè)鍵值對(duì)會(huì)替換前面的,值不需要唯一。
- 值可以取任何數(shù)據(jù)類型,但鍵必須是不可變的,如字符串,數(shù)字或元組。
2?? CAPL中叫Associative fields ,定義方法如下
- capl定義如下圖,key,value的數(shù)據(jù)類型可以是: long, int64, float, double, enumeration types and char[].
- 不像python,在同一個(gè)變量中,value可以是整形,也可以是字符串,CAPL中,只能是同一種數(shù)據(jù)類型
- 下面代碼key 和value 都是 字符串類型的
- 輸出結(jié)果:
Age is mapped to 7
Name is mapped to Zara
sex is mapped to boy
- 下面代碼key 字符串類型的,Value是long類型
3?? 特殊的for 語句
- 這個(gè)for 循環(huán)是特殊的,就是這個(gè)結(jié)構(gòu) char[] 是key的數(shù)據(jù)類型;mykey,可以隨意定義,代表key;setSignal是keyvalue 變量名
- for循環(huán)所以是按照key的升序來的,仔細(xì)看下上面打印輸出,Age ,Name ,sex先后打印出來,并不是按照賦值的順序。
- 可以在循環(huán)中增加或者更改 value的
4?? 作為函數(shù)參數(shù)傳遞
on key 'c' {long setSignal[char []];setSignal["speed"] = 80;setSignal["igin"] = 1;write("調(diào)用函數(shù)之前:"); for (char [] mykey : setSignal){ write("%s is mapped to %d", mykey, setSignal[mykey]); }printMap(setSignal);write("調(diào)用函數(shù)之后:"); for (char [] mykey : setSignal){ write("%s is mapped to %d", mykey, setSignal[mykey]); } }void printMap(long m[char []]) {for (char [] mykey : m){if (m[mykey] == 80){m[mykey] = 90; m["drivemode"] = 7;} }}- 輸出結(jié)果:
調(diào)用函數(shù)之前:
igin is mapped to 1
speed is mapped to 80
調(diào)用函數(shù)之后:
drivemode is mapped to 7
igin is mapped to 1
speed is mapped to 90
5?? 內(nèi)置函數(shù)containsKey 檢查key是否存在
on key 'd' {long setSignal[char []];setSignal["speed"] = 80;setSignal["igin"] = 1;if (setSignal.containsKey("speed")) { write("key speed 存在");}else{write("key speed 不存在");} }6?? 內(nèi)置函數(shù)size 統(tǒng)計(jì)鍵值對(duì)個(gè)數(shù)
on key 'd' {long setSignal[char []];setSignal["speed"] = 80;setSignal["igin"] = 1;write("setSignal key/value number:%d",setSignal.size()); }setSignal key/value number:2
7?? 內(nèi)置函數(shù)remove 根據(jù)key刪除一個(gè)key/value
on key 'd' {long setSignal[char []];setSignal["speed"] = 80;setSignal["igin"] = 1;setSignal.remove("speed");for (char [] mykey : setSignal){ write("%s is mapped to %d", mykey, setSignal[mykey]); } }igin is mapped to 1
7?? 內(nèi)置函數(shù)clear 刪除所有key/value
on key 'd' {long setSignal[char []];setSignal["speed"] = 80;setSignal["igin"] = 1;setSignal.clear();write("setSignal key/value number:%d",setSignal.size()); }setSignal key/value number:0
🌎總結(jié)
- 🍅 有需要演示中所用demo工程的,可以關(guān)注下方公眾號(hào)網(wǎng)盤自取啦,感謝閱讀。
- 🚩要有最樸素的生活,最遙遠(yuǎn)的夢想,即使明天天寒地凍,路遙馬亡!
- 🚩如果這篇博客對(duì)你有幫助,請(qǐng) “點(diǎn)贊” “評(píng)論”“收藏”一鍵三連 哦!碼字不易,大家的支持就是我堅(jiān)持下去的動(dòng)力。
總結(jié)
以上是生活随笔為你收集整理的CAPL中的键值对(hash)数据类型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高数/线性代数常用公式/技巧
- 下一篇: html三级下拉栏插件,纯js超酷下拉框