android - Kotlin - 局部变量与全局变量
问题描述
您可以在不初始化或添加lateinit的情况下声明一个局部变量,但对于全局变量来说并非如此,我的问题是为什么?为什么编译器也不给局部变量错误?
例如 :
class A{
var abc : String // this is not allowed by compiler
fun myOwnedFun(){
var abcd : String // this is allowed
}
}
我知道一件事是允许的,另一件事是不允许的,但我很好奇为什么。
解决方案
局部变量的范围是定义它的函数。编译器在第一次访问之前验证局部变量是否已在函数内部初始化是没有问题的。
对于公共类字段,范围是无限的,因此编译器无法确保在访问该字段之前对其进行初始化。为了防止程序通过使用未初始化的变量进入错误状态,编译器会引发错误。
推荐阅读
- javascript - 单击时如何更改所有活动客户端的按钮?
- sql - 过滤器只得到一个条件
- ibm-cloud-infrastructure - 通过 API 更新 S3 凭证
- python - 如何为多色线创建基本图例?
- postgresql - Psql:特定用户的权限被拒绝
- php - 通过 Nginx Vs 部署 Laravel 站点。PHP 工匠服务
- python - pip install error for mysqlclient command -u -c "import setuptools, tokenize failed with error code 1
- html - 将数据从 MSSQL 中的查询传递到下拉列表
- ios - 无法发布 iOS 应用 - 不支持的版本(SDK → Xcode → 操作系统)
- sql-server - 无法与 sqlalchemy 连接