这期是 HenCoder 布局部分的第二期:重写 onMeasure() 来全新定制自定义 View 的尺寸。 简介 这期虽然距离上期的时间比较久,但主要是我的个人原因,而不是因为这期的内容难。 开发者的要求(布局文件中 layout_ 打头的属性)经过父 View 处理计算后的更精确的要求; 限制的分类: UNSPECIFIED:不限制 AT_MOST:限制上限 EXACTLY:限制固定值 全新定义自定义
这期是 HenCoder 布局部分的最后一期:重写 onMeasure() 和 onLayout() 来定制 Layout 的内部布局。
一,结构体类型的声明 1.结构体的声明 struct tag //结构体类型名 { member-list; //结构体成员 }; //分号不能丢 2,结构体类型的创建和初始化 下面这种为匿名创建 struct { char name[20];//姓名 int age;//年龄 char sex[5];//性别 }s; 这是一个匿名结构体类型
# 一、定义 props 类型 第一种方式无法自动推断出类型 <script setup lang="ts"> defineProps(['id', 'title', 'price', 'isStock 使用 TypeScript 的方式定义 <script setup lang="ts"> // 使用 interface 定义 interface Product { id: number, # 二、使用 withDefaults,给 props 定义默认值 <script setup lang="ts"> // 使用 interface 定义 interface Product { { title: '默认标题', price: 100, isStock: true, }) </script> # 总结-写在最后 说明 vue 不支持使用外部导入进来的类型限制 ,比如通过 import 这种导入进来的不行,必须定义在内部
# 一、定义 ref 类型的三种方式 自动推断 <script setup> import { ref } from 'vue' const num = ref(0) </script> 2. 显示定义类型(需要导入 Ref) <script setup> import { ref, Ref } from 'vue' const str: Ref<string> = ref('str') < setup> import { ref } from 'vue' const bool = ref<boolean>(true) </script> # 总结-写在最后 说明 ref 和 reactive 定义类型是一样的
为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量50千瓦时(含50千瓦时)以内的,电价为0.53元/千瓦时;超过50千瓦时的,超出部分的用电量,电价上调0.05元/千瓦时。请编写程序计算电费。
我们为分类问题中的直线取一个新名字:决策边界(decision boundary),把决策边界定义为: w\cdot x = 0 图片 w\cdot x = w_1x_1 + w_2x_2 既然是分类问题的决策边界 } w\cdot x &= w_1x_1 + w_2x_2 \\ &=1\cdot 1 + 1\cdot -2\\ &= -1 < 0 \end{split} 图片 向量的内积除了用向量中的元素进行定义 ,还可以根据向量的模和两个向量之间的夹角来定义。
一、定义 emits 类型&原生 DOM 元素类型 定义自定义触发事件(调用签名) const emit = defineEmits<{ (e: "事件名字"): void (e: " 事件名字"): void (e: "事件名字", 传递字段名: 类型): void }>() // 获取 DOM 元素的时候需要进行强制转换类类型 function sendEmit() { emit('事件名字', 传递单数) } 强制转换 DOM 类型(DOM 类型查看文档) const emit = defineEmits<{ (e: "事件名字"): void (e: "事件名字"): void (e: "事件名字", 传递字段名: 类型): void }>() // 获取 DOM 元素的时候需要进行强制转换类类型 function sendEmit const value = (e.target as HTMLSelectElement).value // 这里获取到的是 true 或 false emit('事件名字', 字段名: 类型
在C语言中数据类型分为内置类型(int,char等)和自定义类型(数组,结构体,联合体,枚举),所以结构体是自定义类型之一。那为什么会有结构体呢? 2 结构体的声明 结构体的说明相当于我们声明一个整型类型int一样规定了其存放的是整型类型,即结构体的说明规定了这个自定义类型中可以存放什么数据。 4 结构的特殊声明【匿名结构体类型】 4.1 定义:在声明结构的时候,可以不完全的声明即把结构体标签省略掉。 :就是我们如果使用匿名的结构体类型,如果没有对结构体类型重命名的话,只能使⽤⼀次,即我们只能定义s1这一个结构体变量。 位段中的成员在内存中从左向右分配,还是从右向左分配,标准尚未定义。 4.
# 一、provide / inject 类型定义 # 定义 provide 值的类型 import {InjectIonKey } from 'vue' // 使用 Symbol() 来定义key 因为他不能被重复定义 export default const Theme = Symbol() as InjectIonKey<值的类型> # 传递 provide 值 <script setup lang ts"> import Theme from 'Theme.js' provide(Theme, '需要传递的值') </script> # 接收 inject 值 因为 Symbol 不允许被重复定义 theme = inject(Theme) # 二、第二种方式定义 provide('title', '这是我需要传递的内容') // 此时因为传递和接收在不同的文件,无法自动判断出是啥类型,默认是 unknown const title = inject('title') // 可以使用泛型来指定类型 cosnt title = inject<string>('title')
一 ⾃定义类型:联合 1 联合体类型的声明/定义/赋值 像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员可以不同的类型。 但是编译器只为最⼤的成员分配⾜够的内存空间。 5 联合的⼀个练习(大小端的判断) 二 ⾃定义类型:枚举 枚举顾名思义就是⼀ 列举,把可能的取值⼀ 列举。 声明枚举类型的时候也可以自由赋初值。 2 枚举类型的使⽤ 注意:那是否可以拿整数给枚举变量赋值呢?在C语⾔中是可以的,但是在C++是不⾏的,C++的类型检查⽐较严格。 2 枚举类型的优点 为什么使⽤枚举? 我们可以使⽤ #define 定义常量,为什么⾮要使⽤枚举? 枚举的优点: 1. 增加代码的可读性和可维护性 2. 和#define定义的标识符⽐较枚举有类型检查,更加严谨。 3. 便于调试,预处理阶段会删除 #define 定义的符号 4. 使⽤⽅便,⼀次可以定义多个常量 5.
结构的每个成员可以是不同类型的变量。 Node* next;//结构体指针的大小是4/8个字节 }; 变成指针后,结构体的大小就固定可算了,详细知识涉及到数据结构链表的知识,后面再进行讲解 因此,在结构体中,结构体的自引用不是结构体里面包含同类型的结构体变量 大部分的参考资料都是这样说的 : 1.平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据的,某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。 char c1; int i; char c2; }; struct S2 { char c1; char c2; int i; }; 例证:S1和S2类型的成员一模一样 枚举类型的定义 枚举的优点 1.增加代码的可读性和可维护性 2.和#define定义的标识符比较枚举有类型检查,更加严谨 3.防止了命名污染 4.便于调试,使用方便,一次可以定义多个常量 枚举类型的大小就是一个整形的大小
一、template 的 ref 类型定义
,你也可以在别的地方定义这个变量,因为你已经创建了一个新的类型,一个新的结构体类型 2.如何使用结构体类型 创建完了一个结构体类型,那我们应该这样去使用这个结构体类型呢? ,你也可以在别的地方定义这个变量,因为你已经创建了一个新的类型,一个新的结构体类型 int main() { struct abc a1 = { 20,'b',5.2 };//按顺序初始化结构体 / ,你也可以在别的地方定义这个变量,因为你已经创建了一个新的类型,一个新的结构体类型 int main() { struct abc a3 = { .a = 60,.c = 9.9,.b = 'a' } 二、枚举类型 1.枚举类型的定义 #include<stdio.h> enum sex { male, female, no };//这里就定义了一个关于性别的枚举类型,它会按照从0开始的顺序给male 使用方便,一次可以定义多个常量 三、联合体类型 1.联合体类型的定义 这种类型定义的变量也包含一系列的成员,特征是这些成员公用同一块空间(所以联合也叫共用体)。
02定义 1、串(string)(或字符串)是由零个或多个字符组成的有限序列。 2、零个字符的串称为空串,它的长度为零。 3、串中任意个连续的字符组成的子序列称为该串的字串。
前言 与结构体类似,联合体也是一个自定义类型,大家或许在某些地方发现相同之处,二者可以相互借鉴,但不能混淆在一起哦~ ,枚举与二者都不同,敬请期待~ 联合体类型的声明 像结构体⼀样,联合体也是由⼀个或者多个成员构成 ,这些成员可以不同的类型。 #include <stdio.h> //联合类型的声明 union Un { char c; int i; }; int main() { //联合变量的定义 union Un un = { {}中的内容是枚举类型的可能取值,也叫 枚举常量 这些可能取值都是有值的,默认从0开始,依次递增1,当然在声明枚举类型的时候也可以赋初值。 和#define定义的标识符⽐较枚举有类型检查,更加严谨。 3. 便于调试,预处理阶段会删除 #define 定义的符号 4. 使⽤⽅便,⼀次可以定义多个常量 5.
02 定义 1、串(string)(或字符串)是由零个或多个字符组成的有限序列。 2、零个字符的串称为空串,它的长度为零。 3、串中任意个连续的字符组成的子序列称为该串的字串。
如下代码: void main() { int a=1;// 定义了一个整型变量,取名为a, 并赋值为1 (强数据类型语言) int b=3;// 定义了一个整型变量,取名为b, 并赋值为 变量的数据类型 每一种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间(使用字节多少表示)。 1100001)——>码值(97)——> 字符’a’——>读取(显示) 字符和码值的对应关系是通过字符编码表决定的(是规定好) 布尔类型 基本介绍 C语言标准(C89)没有定义布尔类型,所以C语言判断真假时以 0为假,非0为真 [案例] 但这种做法不直观,所以我们可以借助C语言的宏定义 。 C语言标准(C99)提供了_Bool 型, _Bool仍是整数类型,但与一般整型不同的是,_Bool变量只能赋值为0或1,非0的值都会被存储为1, C99还提供了一个头文件<stdbool.h> 定义了
# 定义 ts 类型(自动推断) 需要注意的是 TypeScript 类型都是小写的,要和 JavaSctipt 里面的构造函数区分开来 // 这种是隐式类型的定义,后面第一次赋值的是啥类型他就是啥类型 let productName = '纯棉 T 恤' // 当我们给他定义好了类型,后面在使用这个数据的时候,就可以自动判断出它里面有那写方法 // 如: productName.price() // 当我们定义好了类型以后,再给他赋值其他类型的数据就会报错 productName = 12 // 报错 隐式定义类型 let str1 = 'xxx' let number1 = 200 let isShow = true let blog = { title: 'xxx', // 隐式 string 类型 viewCont: 200 // 隐式 number 类型 } let tags = ['JavaScript', 'Vue', 'React'] // 隐式数组中的类型都是 string 类型
# 一、开发中 ref 定义类型 <script setup lang="ts"> import { ref } from 'vue' interface Product { id: number