首页 > 其他分享 >鸿蒙原生应用元服务开发-仓颉基础数据类型Unit与Nothing类型

鸿蒙原生应用元服务开发-仓颉基础数据类型Unit与Nothing类型

时间:2024-09-06 15:53:37浏览次数:10  
标签:循环体 函数 数据类型 类型 Unit Nothing 表达式

一、Unit 类型

对于那些只关心副作用而不关心值的表达式,它们的类型是 Unit。例如,print 函数、赋值表达式、复合赋值表达式、自增和自减表达式、循环表达式,它们的类型都是 Unit。

Unit 类型只有一个值,也是它的字面量:()。除了赋值、判等和判不等外,Unit 类型不支持其他操作。

二、Nothing 类型

Nothing 是一种特殊的类型,它不包含任何值,并且 Nothing 类型是所有类型的子类型。

break、continue、return 和 throw 表达式的类型是 Nothing,程序执行到这些表达式时,它们之后的代码将不会被执行。其中 break、continue 只能在循环体中使用,return 只能在函数体中使用。

包围着的循环体“无法穿越”函数边界。在下面的例子中,break 出现在函数 f 中,外层的 while 循环体不被视作包围着它的循环体;continue 出现在 lambda 表达式中,外层的 while 循环体不被视作包围着它的循环体。

while (true) {
    func f() {
        break // Error, break must be used directly inside a loop
    }
    let g = { =>
        continue // Error, continue must be used directly inside a loop
    }
}

由于函数的形参和其默认值不属于该函数的函数体,所以下面例子中的 return 表达式缺少包围它的函数体——它既不属于外层函数 f(因为内层函数定义 g 已经开始),也不在内层函数 g 的函数体中:

func f() {
    func g(x!: Int64 = return) { // Error, return must be used inside a function body
        0
    }
    1
}

注意

目前编译器还不允许在使用类型的地方显式地使用 Nothing 类型。

资料来源:HarmonyOS Developer 官方网站

标签:循环体,函数,数据类型,类型,Unit,Nothing,表达式
From: https://blog.51cto.com/u_14946066/11938396

相关文章

  • 06 Windows批处理之整数和浮点数据类型
    在前一篇中,我们详细介绍了字符串和布尔数据类型。在本文中,我将重点讨论数值数据类型,特别是整数和浮点数据类型,详细研究它们。批处理可以轻松地处理整数,无论它们是十进制、十六进制还是八进制。然而,浮点数与布尔数类似,因为批处理实际上并不显式地支持它们作为数据类型。但是,再一次......
  • Unity+QT, 如何把Unity打包出的exe嵌入QT程序中,并且使用Socket进行交互
    文章目录概要前期准备QT与Unity的Socket通信实际应用场景总结概要在VR开发中,常常需要桌面窗口和VR头盔使用者进行交互。通过将Unity制作的VR程序嵌入到QT应用程序窗口中,并使用Socket进行通信,可以实现这种交互。本文将介绍如何实现这一功能。前期准备Unity项目打......
  • 新手c语言讲解及题目分享(十九)--数据类型专项练习
    本文主要讲解c语言的基础部分,常见的c语言基础数据类型,这个也非常重要。参考书目和推荐学习书目:通过网盘分享的文件:C语言程序设计电子教材(1).pdf链接:https://pan.baidu.com/s/1JFqSaCKZ0A2Lr944e72NUA?pwd=p648提取码:p648目录前言一.常量与变量1.常量2.变量二.......
  • KUnit:设备模拟&重定向
    设备模拟有些驱动文件是需要device的,所以KUnit提供了一些设备模拟的方法,并且还提供了总线来管理设备的生命周期。下面先以clockdevice模拟举例(drivers/clk/clk_test.c)首先用一个struct来模拟这个clk设备。其中clk_hw是clk的描述,rate相当于模拟设备的波特率寄存器structclk......
  • KUnit
    基本介绍KUnitSuiteMemory每一个kUnit都有自己的上下文,所以一个崩溃了,不会影响到其他的suit。开关目前可以有下面几种方法控制case测试。menuconfig控制使用.kunitconfig控制编译的测试文件使用宏选择性开启某些case使用debugfskunit_get_current_test总开关CONFIG_......
  • JavaScript中的数据类型-存储差别
    总结声明变量时不同的内存地址分配:简单类型的值存放在栈中,在栈中存放的是对应的值引用类型对应的值存储在堆中,在栈中存放的是指向堆内存的地址不同的类型数据导致赋值变量时的不同:简单类型赋值,是生成相同的值,两个对象对应不同的地址复杂类型赋值,是将保存对象的内存地......
  • 【紧急修复】二之国2:亡魂之国 UnityPlayer.dll 丢失?《二之国2:亡魂之国》UnityPlayer.d
    在使用《二之国2:亡魂之国》这款基于Unity引擎开发的游戏时,如果遇到“UnityPlayer.dll丢失”的错误提示,这通常意味着游戏无法正确加载Unity引擎的核心组件,导致游戏无法正常启动。以下是对该问题的深度剖析及修复方法:问题剖析依赖项缺失:UnityPlayer.dll可能依赖于其他DLL文件,......
  • MySQL 数据类型详解
    MySQL是一种广泛使用的关系型数据库管理系统,它支持多种数据类型以满足各种应用场景的需求。本文将详细介绍MySQL支持的数据类型、它们的使用场景以及实现原理,并通过图示帮助读者更直观地理解。目录简介数值类型整型浮点型定点型日期和时间类型字符串类型字符串二进制字......
  • unittest+request+htmltestrunner为什么强于pytest+request+allure?
    关于接口自动化框架python的实现方案,主流的就unittest/pytest+request+htmltestrunner/allure。而unittest库相比于pytest在网上被各个博主喷的体无完肤,没有mark标记共功能,没有用例重跑机制、测试报告不如allure好看功能不如allure强大等等。但是我们深度思考后能否给自己提个......
  • unittest如何设计支持运行多个应用的接口自动化框架(一)
    对于接口自动化框架,CI持续集成是一个无法绕开的话题。讨论这个话题,说实话还是有一点不知从何说起..或许应该拆开为多个话题去讨论,因为要讨论的点确实太多,既然这样,那么我就以我在实际工作中见到的一些接口自动化框架实现方案在CI上存在的一些设计不足来做讨论吧,可能这样更能戳到......