# Solidy编程语言学习笔记 **Published by:** [Giselle](https://paragraph.com/@giselle/) **Published on:** 2022-04-29 **URL:** https://paragraph.com/@giselle/solidy ## Content 在上seedao的课程的时候被安利了一个很好用的学习solidity编程的的网站叫cryptozombies https://cryptozombies.io/en/course 主要是通过游戏的方式一步一步学习solidity编程,我觉得是学习这门语言最有趣的方式,也安利给了朋友们,用过都说好! 以下是学习笔记,持续更新中… 【合约】 【状态变量】 【无符号数据类型】unit,其值不能是负数 【有符号数据类型】int 【结构体】struct xx 【】 允许你生成一个更复杂的数据类型,有多个属性。 【字符串】 String 用于储存任意长度的编码数据 【数组】 fixedArray stringArray dynamicArray 【公共数组】定义 public 数组, Solidity 会自动创建 getter 方法 状态变量被永久保存在区块链中。所以在你的合约中创建动态数组来保存成结构的数据是非常有意义的 【定义函数】function xx(){} 习惯上函数里的变量都是以(_)开头 (但不是硬性规定) 以区别全局变量。我们整个教程都会沿用这个习惯。 函数变量 vs 全局变量 【如何使用结构体】 struct Person { uint age; string name; } Person[] public people; 【添加数组】 people.push(Person(16, "Vitalik")); array.push() 在数组的 尾部 加入新元素 ,所以元素在数组中的顺序就是我们添加的顺序, 如: 【私有函数】 将自己的函数定义为私有是一个好习惯 如果函数属性为公共,则意味着任何一方都可以调用你的函数,如果定义为私有,则只有合约中的其他函数才可以调用你的函数; 和函数的参数类似,私有函数的名字开头也用_开头 【散列函数】 散列函数keccak256,它用了SHA3版本。一个散列函数基本上就是把一个字符串转换为一个256位的16进制数字 【类型转换】 uint转换成uint8 当说类型转换为xx时候,则要在类型前面直接加xx 【如何执行调用函数】 【事件】 事件 是合约和区块链通讯的一种机制。你的前端应用“监听”某些事件,并做出反应。 ## Publication Information - [Giselle](https://paragraph.com/@giselle/): Publication homepage - [All Posts](https://paragraph.com/@giselle/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@giselle): Subscribe to updates - [Twitter](https://twitter.com/Gisellekongk): Follow on Twitter