日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CAPL中的键值对(hash)数据类型

發(fā)布時(shí)間:2023/12/31 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CAPL中的键值对(hash)数据类型 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
  • 🍅 我是螞蟻小兵,專注于車載診斷領(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ù)字或元組。
tinydict = {'Name': 'Zara', 'Age': 7, 'sex': 'boy'}# 定義字典并初始化 tinydict['Age'] = 8 # 更新 tinydict['School'] = "RUNOOB" # 添加print( "tinydict['Age']: ", tinydict['Age']) print( "tinydict['School']: ", tinydict['School'])

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 都是 字符串類型的
on key 'a' {char[20] tinydict[char []];strncpy(tinydict["Name"], "Zara", 20); strncpy(tinydict["Age"], "7", 20);strncpy(tinydict["sex"], "boy", 20); for (char[] mykey : tinydict){write("%s is mapped to %s", mykey, tinydict[mykey]);}}
  • 輸出結(jié)果:

Age is mapped to 7
Name is mapped to Zara
sex is mapped to boy

  • 下面代碼key 字符串類型的,Value是long類型
on key 'b' {long setSignal[char []];setSignal["speed"] = 80;setSignal["igin"] = 1;for (char [] mykey : setSignal){write("%s is mapped to %d", mykey, setSignal[mykey]);}}

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先后打印出來,并不是按照賦值的順序。
for (char [] mykey : setSignal){write("%s is mapped to %d", mykey, setSignal[mykey]);}
  • 可以在循環(huán)中增加或者更改 value的
on key 'b' {long setSignal[char []];setSignal["speed"] = 80;setSignal["igin"] = 1;for (char [] mykey : setSignal){if (setSignal[mykey] == 80){setSignal[mykey] = 90; setSignal["drivemode"] = 7;} write("%s is mapped to %d", mykey, setSignal[mykey]); } }

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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。