- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
如果我说:
x = "abc"
这看起来像是一个声明、定义和赋值,同时发生,不管我之前是否在程序中说过任何关于 x 的事情。
这是正确的吗?
我不确定在 Ruby 中声明、定义和赋值的正确术语是什么,或者由于 Ruby 中的动态类型,这些东西之间是否存在区别。
@tg:关于您的第 2 点:即使 x 在 x = "abc"语句之前存在,您不能将 x = "abc"语句称为定义/重新定义吗?
最佳答案
声明:否。
在 Ruby 中谈论声明 变量是没有意义的,因为在这些语言中没有类似于声明的东西。为编译器设计的语言有声明,因为编译器需要提前知道数据类型有多大以及如何访问它们的不同部分。 例如,如果我在 C 中说:
int *i;
然后编译器知道在某处为 i 预留了一些内存,并且它的大小足以容纳指向 int 的指针。最终,链接器会将所有对 i
的引用 Hook 在一起,但至少编译器知道它在某处。
定义: 可能。
定义 通常为某物设置初始值(至少在熟悉的编译语言中)。如果 x
在 x = "abc"
语句之前不存在,那么我想你可以称其为定义,因为那是 Ruby 必须为符号 x
。
不过,定义 是一个特定的术语,人们通常使用它来区分对某个变量的初始静态赋值与该变量的声明。在 Ruby 中,您没有那种声明。如果一个变量在当前范围内的某处被赋值,您通常只说它是定义的,如果没有,您说它是未定义。
您通常不会谈论它有一个定义,因为在 Ruby 中,这相当于赋值。没有特殊的上下文可以证明您像其他语言一样说定义。
这将我们带到...
作业: 是。
您绝对可以将其称为赋值,因为它正在为符号x
赋值。我认为没有人会反对这一点。
关于Ruby 术语问题 : Is this a Ruby declaration, 定义和赋值,同时进行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/672135/
我是一名优秀的程序员,十分优秀!