【发布时间】:2014-05-16 10:43:05
【问题描述】:
在几乎所有语言中,如果未定义变量,我倾向于编写将变量设置为默认值的东西。每次我对为什么语法不简单感到惊讶时,例如为什么我必须写两次变量名才能将其设置为默认值。例如,在 Perl 中:
my $var;
# some code here...
$var = "default" unless $var; # $var typed twice
或者在 C 中:
char *var = NULL;
// some code here...
if (!var) // var typed
var = "default"; // twice
如果没有定义变量,为什么不使用一些语法糖来设置变量?在 perl 中它可能看起来像
$var ?= "default";
我只是好奇,是否有任何语言实际上为此提供了语法糖?
【问题讨论】:
-
我刚刚在 perl 中找到了语法糖:stackoverflow.com/questions/7796470/…
-
请注意,这部分是由于变量在不同语言中的实现方式。在像 C 这样的编译语言中,如果一个变量存在,它就有一个值(它可能是未定义/未初始化/垃圾/陷阱诱导/等,但由于它指的是内存中的特定位置,所以它有一个值)。在通过字典或其他查找表类型的结构实现变量的语言中,实际上可能有一个当前没有值的变量。许多解释型语言,如 shell、perl、python 等,会更像这样。