【问题标题】:Any language with syntactic sugar for assign variable if not defined?如果未定义,任何具有用于分配变量的语法糖的语言?
【发布时间】: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 等,会更像这样。

标签: syntax syntactic-sugar


【解决方案1】:

bash支持参数扩展和测试。

例如如果$1 已定义且不是空的,则使用$1;否则,设置为“文本”,输入:

output=${1-text}

【讨论】:

    猜你喜欢
    • 2011-09-04
    • 1970-01-01
    • 1970-01-01
    • 2013-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-10
    相关资源
    最近更新 更多