如果我说:
x ="abc"
这似乎是一个声明,定义和赋值,所有这些都在同一时间,无论我之前是否曾在程序中说过任何关于x的内容.
它是否正确?
我不确定Ruby中用于声明,定义和分配的正确术语是什么,或者由于Ruby中的动态类型,这些东西之间甚至有区别.
@tg:关于你的观点#2:即使x在x ="abc"语句之前存在x,你难道不能将x ="abc"语句称为定义/重新定义吗?
声明: 第
它没有意义谈论宣布在Ruby中的变量,因为没有什么类似的语言的声明.为编译器设计的语言具有声明,因为编译器需要事先知道有多大的数据类型以及如何访问它们的不同部分. 例如,如果我在C中说:
int *i;
然后编译器知道某处有一些内存留给i,并且它需要保持指向int的指针一样大.最终链接器将所有引用挂钩i
在一起,但至少编译器知道它在某处.
定义: 可能.
甲定义通常设置(在熟悉编译语言至少)的东西的初始值.如果x
在x = "abc"
语句之前不存在,那么我猜你可以称之为定义,因为那时Ruby必须为符号赋值x
.
但是,定义是一个特定的术语,人们通常用它来区分值的初始静态赋值和某个变量与该变量的声明.在Ruby中,你没有这种说法.您通常只是说一个变量被定义,如果它已在当前范围的某处分配了一个值,并且如果它没有,则说它是未定义的.
你通常不会谈论它有一个定义,因为在Ruby中只相当于赋值.没有特殊的上下文可以证明你在其他语言中的定义是合理的.
这让我们...
作业: 是的.
你绝对可以称之为赋值,因为它为符号赋值x
.我认为没有人会不同意这一点.