标签: unset

如何在C中取消设置变量以允许稍后使用具有不同数据类型的相同名称?

我想在C程序中使用相同的变量名和不同的数据类型而不进行强制转换.

我真的想这样做,不要问为什么.

那我该怎么办呢?
如果在进行预防性设置时该变量不存在,我该如何处理错误?

c variables unset

6
推荐指数
1
解决办法
7204
查看次数

我们需要在T​​CL中"取消设置"变量吗?

是否需要良好的TCL代码?如果我们不在脚本中使用"unset"关键字会发生什么?我应该知道的任何不良影响?

我继承了一些遗留代码,由于"未设置"而导致的错误 - 不存在的变量正在推动我的问题!

tcl unset

5
推荐指数
1
解决办法
6177
查看次数

GIT和Ruby:如何在ruby脚本中取消设置GIT_DIR变量?

我写了一个非常简单的'部署'脚本作为我的post-update钩子在我的裸git仓库中运行.

变量如下

live domain         = ~/mydomain.com
staging domain      = ~/stage.mydomain.com
git repo location   = ~/git.mydomain.com/thisrepo.git (bare)

core                = ~/git.mydomain.com/thisrepo.git
core                == added remote into each live & stage gits
Run Code Online (Sandbox Code Playgroud)

livestage已经初始化的git回购(非裸)和我已经加入我的裸回购作为远程他们每个人(命名core),这样git pull core stagegit pull core live会从各自的拉动更新的文件branch中的core回购.

脚本如下:

#!/usr/bin/env ruby

# Loop over each passed in argument
ARGV.each do |branch|

  # If it matches the stage then 'update' the staging files
  if branch == "refs/heads/stage" …
Run Code Online (Sandbox Code Playgroud)

ruby git variables shell unset

5
推荐指数
2
解决办法
3249
查看次数

MongoDB:更新"$ unset"的修饰符语义

在MongoDB中,更新修饰符unset的工作方式如下:

考虑具有集合用户的Mongo DB数据库db.用户包含以下格式的Document:

//Document for a user with username: joe
{
    "_id" : ObjectId("4df5b9cf9f9a92b1584fff16"),
    "relationships" : {
            "enemies" : 2,
            "friends" : 33,
            "terminated" : "many"
    },
    "username" : "joe"
}
Run Code Online (Sandbox Code Playgroud)

如果我想删除已终止的密钥,我必须指定$ unset update修饰符,如下所示:

>db.users.update({"username":"joe"},{"$unset":{"relationships.terminated": "many"}});
Run Code Online (Sandbox Code Playgroud)

我的问题是,为什么我必须为$ unset 指定整个键值对,而不是简单地指定:

>db.users.update({"username":"joe"},{"$unset":{"relationships.terminated"}});

Mon Jun 13 13:25:57 SyntaxError: missing : after property id (shell):1
Run Code Online (Sandbox Code Playgroud)

为什么不?

编辑:

如果$ unset的方法是根据JSON规范指定整个键值对,或者在语句中添加"1"作为值,为什么Shell本身不能进行"1"替换?为什么不提供这样的功能?是否存在提供此类支持的陷阱?

language-agnostic json mongodb unset semantics

5
推荐指数
1
解决办法
7618
查看次数

如何取消设置全局变量。

我有id一个项目和id一个客户端,它们是以 JSON 格式传递的 php 会话。这些存储在全局变量中id_pid_c因此我可以使用这些 id 进行多次插入和更新选择等。

当用户选择另一个项目或更改页面时,我需要取消设置这些变量。

  • 我可以将null值传递php给全局变量以重置它们吗?
  • 有没有更好的方法来做我想做的事?
  • 仅当需要文件时,我如何才能存储这些phpphp?进行查询的文件位于单独的文件中。

php jquery session-variables unset

5
推荐指数
1
解决办法
8637
查看次数

PHP foreeach删除数组元素

今天在为博客编写文本分析工具时,我发现PHP行为对我来说非常奇怪,并且无法绕过它.在规范化文本时,我试图删除低于最小长度的单词,所以我在我的规范化方法中写了这个:

if ($this->minimumLength > 1) {
    foreach ($string as &$word)
    {
        if (strlen($word) < $this->minimumLength) {
            unset($word);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

奇怪的是,这会在我的数组中留下一些低于允许长度的单词.在我整个班级寻找错误之后,我试了一下:

if ($this->minimumLength > 1) {
        foreach ($string as $key => $word)
        {
            if (strlen($word) < $this->minimumLength) {
                unset($string[$key]);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

瞧!这非常有效.现在,为什么会发生这种情况?我查看了PHP文档,它说明:

如果一个PASSED BY REFERENCE变量在函数内部未设置(),则只销毁局部变量.调用环境中的变量将保留与调用unset()之前相同的值.

是否foreach充当这里的calling environment,因为它有它自己的范围是什么?

php foreach unset

5
推荐指数
1
解决办法
158
查看次数

如何在php中取消设置全局变量?

我了解 php 和 Web 编程的基础知识。这是我的 php 代码。我见过几个类似的问题。他们使用 unset 函数取消设置全局变量。我希望每次用户打开网址时,都会出现用户名和密码提示,输入用户名密码后,如果正确,则下载文件并删除用户名和密码,如果错误,则删除用户名和密码,并再次提示输入用户名密码。

<?php    
    function destroy_foo()
    {
        if (isset($_SERVER['PHP_AUTH_USER'])) {
            unset($_SERVER['PHP_AUTH_USER']);       
        }
        if (isset($_SERVER['PHP_AUTH_PW'])) {
            unset($_SERVER['PHP_AUTH_PW']);
        }
    }

    if (!isset($_SERVER['PHP_AUTH_USER'])) {

        header('WWW-Authenticate: Basic realm="My Realm"');
        header('HTTP/1.0 401 Unauthorized');
        echo 'Text to send if user hits Cancel button';
        exit;
    } else {

        echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>";
        echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>";

        $file = 'welcome.txt';
        if($_SERVER['PHP_AUTH_PW'] == "admin" && $_SERVER['PHP_AUTH_USER'] =="admin"){
            destroy_foo();

            if (file_exists($file)) {

               //Do some task
                destroy_foo();
                exit;
            }
        }
        else
        {
            //Do …
Run Code Online (Sandbox Code Playgroud)

php global-variables unset

5
推荐指数
1
解决办法
3万
查看次数

为什么"isset($ a [0])和unset($ a [0]);" 导致语法错误?

我的代码:

$a = [];
isset($a[0]) and unset($a[0]);
Run Code Online (Sandbox Code Playgroud)

表明 "syntax error, unexpected 'unset' (T_UNSET)"

$a = [];
isset($a[0]) and exit();
Run Code Online (Sandbox Code Playgroud)

有效!

两者的exit()unset()正在返回没有价值.为什么一个工作而另一个工作?

php unset

5
推荐指数
1
解决办法
143
查看次数

在 bash 中使 nameref 成为常规变量

编辑:这已被确认是一个错误并将被修复:https : //lists.gnu.org/archive/html/bug-bash/2018-03/msg00055.html


所以我在搞砸 bash 的间接功能,namerefs。我以为我已经掌握了它的窍门,但是当我试图弄清楚如何将 namerefs 转换为常规变量时,我遇到了一些让我困惑的事情。

这是来自man bash:的相关段落:

declare -n 为每个名称指定 nameref 属性,使其成为对另一个变量的名称引用。另一个变量由 name 的值定义。除了使用或更改 -n 属性本身的那些引用、赋值和属性修改之外,所有对 name 的引用、赋值和属性修改都是在 name 值引用的变量上执行的。


我明白的部分

因此,假设您想取消设置 nameref——不是它指向的变量,而是变量本身。您不能只说unset foo,因为这实际上会取消设置foo指向的任何内容;相反,您必须将其设为常规变量,然后取消设置:

$ declare -p

$ foo=bar; bar='hello world'

$ declare -p
declare -- foo="bar"
declare -- bar="hello world"

$ declare -n foo; declare -p    # 'foo' is now a nameref
declare -n foo="bar"
declare -- bar="hello world"

$ declare +n foo; declare -p    # …
Run Code Online (Sandbox Code Playgroud)

bash indirection unset

5
推荐指数
1
解决办法
2018
查看次数

为什么css“all:unset”在MacOS的Safari浏览器中奇怪地工作?

所以基本上我做了这种情况,父母有 css all: unset

然后我注意到当我使用 Safari(Version 12.1.1 (14607.2.6.1.1)) 时,它的所有子项颜色只能受*块影响,甚至不能内联或!important.

但只有color这样,正如您所看到的那样,background-color它正在使用它自己的属性。

但它在 Chrome 中运行良好,是 safari 中的故障还是我做错了什么?我该如何在 Safari 中修复它?

* {
  color: red;                   /* Text color is using this one */
  background-color: pink;
}

.Parent {
  all: unset;
}

.Child {
  color: blue;
  background-color: yellow;     /* Background color is using this one */
}
Run Code Online (Sandbox Code Playgroud)
<div class="Parent">
  <div class="Child">Some Text</div>
</div>
Run Code Online (Sandbox Code Playgroud)

  • 预期结果(铬) 在此处输入图片说明

  • 错误的结果(Safari Version 12.1.1 (14607.2.6.1.1)在此处输入图片说明

html css safari unset

5
推荐指数
1
解决办法
732
查看次数