- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
今天测试下面的代码时惊呆了:
$star = "Aquarius";
$star = 11;
在调试时,我观察到 $star
只是从 string
类型更改为 integer
类型。我对这个功能感到惊讶。例如,在 C++ 中,这是不可能的,但在 C# 中,我考虑了 var 变量,但它不一样。
例如你不能这样做:
var dynamic = "Hello";
dynamic = 3;
我开始想知道当我基本上说 $star = 11 时到底发生了什么。我的猜测是 $star
只是重新初始化,因为它被直接分配给(但这看起来很奇怪,因为解释器已经知道变量 $star
已经在前面声明了)。任何人都可以提供一些明确的或官方来源支持的解释吗?
谢谢。
最佳答案
在 C/C++ 中,类型是在编译时定义的,因为可以基于它进行各种优化。
在 C# 中,编译器根据上下文推断类型,在编译器的大脑中,它用 var
关键字代替类型。这就是为什么在编译器做出初始推断后不能更改类型的原因。
在像 PHP 这样的脚本语言中,变量是 HashMap (关联数组,符号表)中的一个条目。这定义了 namespace (和范围)。实际值部分是一个通用对象类型,它存储值和类型。
关于php - PHP到底是如何实现 'dynamic'变量的呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12548258/
这对你们来说可能很简单,但由于我是java新手,所以我想知道实际上什么是 接下来的部分会发生什么? if (args.length > 0) { file = args[0]; } publi
在我的 View Controller 中,我将 UITapGestureRecognizer 添加到 self.view。我在 self.view 之上添加了一个小 View 。当我点击小 View
我今天尝试从 Obj-C 开始并转到 Swift,我正在阅读文档。我试图在 Swift 中创建一个简单的 IBOutlet,但它不断给我这些错误。 View Controller 没有初始化器 req
我正在尝试使用 VIM 完成(字典和当前缓冲区),但我遇到了问题?和 !在方法名称的末尾。我能以某种方式向 vim 解释方法名称(基本上是单词)最后只能有它,而且只有一个,即 method_name
我是一名优秀的程序员,十分优秀!