标签: indirection

PHP中的动态常量名称

我试图动态创建一个常量名称,然后获取该值.

define( CONSTANT_1 , "Some value" ) ;

// try to use it dynamically ...
$constant_number = 1 ;
$constant_name = ("CONSTANT_" . $constant_number) ;

// try to assign the constant value to a variable...
$constant_value = $constant_name;
Run Code Online (Sandbox Code Playgroud)

但是我发现$ constant值仍然包含常量的NAME,而不是VALUE.

我也尝试了第二级间接$$constant_name但是这会使它变量而不是常量.

有人可以对此有所了解吗?

php constants indirection

72
推荐指数
3
解决办法
4万
查看次数

什么是间接扩张?$ {!var*}是什么意思?

我正在读" Bash初学者指南 ".它说:

如果第一个字符PARAMETER是感叹号,则Bash使用由其余部分形成的变量的值作为变量PARAMETER的名称; 然后展开此变量,并将该值用于替换的其余部分,而不是其PARAMETER自身的值.这被称为间接扩张.

给出的例子是:

franky ~> echo ${!N*}
NNTPPORT NNTPSERVER NPX_PLUGIN_PATH
Run Code Online (Sandbox Code Playgroud)

我在这里不太明白:

从其余部分形成的变量的值 PARAMETER

由于PARAMETER是刚刚!N*的话

其余的 PARAMETER

只是N*.怎么会形成一个变量?Bash在那里搜索了所有可能的命令吗?

bash indirection

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

间接等级解决了每个问题

引用"间接水平解决每个问题"的含义在计算机科学中意味着什么?

computer-science abstraction indirection

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

大卫·惠勒的格言中"间接水平"是什么意思?

我在一本书中读过这句话:

计算机科学中没有任何问题无法使用另一层次的间接解决.

有人可以解释一下吗?"间接水平"是什么意思?

根据我的理解,间接是使用值的指针而不是值本身的奇特名称.请为我澄清一下.

computer-science indirection

28
推荐指数
2
解决办法
9957
查看次数

在yaml中使用占位符

有没有办法在yaml中使用占位符,如下所示:

foo: &FOO
    <<propname>>: 
        type: number 
        default: <<default>>

bar:
    - *FOO 
       propname: "some_prop"
       default: "some default" 
Run Code Online (Sandbox Code Playgroud)

yaml indirection computed-properties template-variables

26
推荐指数
2
解决办法
6万
查看次数

C预处理器是否删除了"&*"的实例?

我正在玩,gcc并尝试了以下一些代码:

int A = 42;
int *B = &A;
int *C = &*B;
Run Code Online (Sandbox Code Playgroud)

并且C == &A,正如所料.但是当我尝试:

int *B = NULL;
int *C = &*B;
Run Code Online (Sandbox Code Playgroud)

原来C == NULL,没有段错误.因此,在获取其地址之前&*B实际上并未解除引用B.

我的猜测是预处理器剥离出来的情况下,&**&之前,他们甚至得到了编译器,因为他们否定对方,但我无法找到任何文件,以验证这是否是标准ç或编译器特定的.

被预处理器剥离出来&*,并*&和我可以期待从任何给定的编译器这种行为?

c standards addressof indirection c-preprocessor

25
推荐指数
2
解决办法
1208
查看次数

在这种情况下,UNPACK pragma做了什么?

我无法理解UNPACKHaskell的工作原理.例如,考虑以下数据声明:

data P a b = P !a !b
data T = T {-# UNPACK #-} !(P Int Int)
Run Code Online (Sandbox Code Playgroud)

如何T解压缩数据类型?它会等同于

data T' = T' !Int !Int
Run Code Online (Sandbox Code Playgroud)

或将Int进一步解压缩:

data T'' = T'' Int# Int#
Run Code Online (Sandbox Code Playgroud)

?关于什么

data U = U {-# UNPACK #-} !(P Int (P Int Int))
Run Code Online (Sandbox Code Playgroud)

haskell indirection

22
推荐指数
1
解决办法
1002
查看次数

如何使用间接引用迭代数组?

如何使此代码有效?

#!/bin/bash
ARRAYNAME='FRUITS'
FRUITS=( APPLE BANANA ORANGE )
for FRUIT in ${!ARRAYNAME[@]}
do
    echo ${FRUIT}
done
Run Code Online (Sandbox Code Playgroud)

这段代码:

echo ${!ARRAYNAME[0]}
Run Code Online (Sandbox Code Playgroud)

打印APPLE.我尝试做类似的事情,但用"[@]"迭代数组.

提前致谢,

bash scripting indirection

20
推荐指数
4
解决办法
1万
查看次数

在应用间接时,标准是否要求对指针变量进行左值到右值的转换?

TL; DR

给出以下代码:

int* ptr;
*ptr = 0;
Run Code Online (Sandbox Code Playgroud)

在应用间接之前,是否*ptr需要进行左值到右值的转换ptr

该标准涵盖了许多地方的左值到左值的主题,但似乎没有指定足够的信息来确定*运算符是否需要这样的转换.

细节

左值到右值的转换是覆盖在N3485的部分4.1 左值到右值转换段落1和说(重点矿山前进):

可以将非函数非数组类型T的glvalue(3.10)转换为prvalue.53如果T是不完整类型,则需要进行此转换的程序是错误的.如果glvalue引用的对象不是T类型的对象,并且不是从T派生的类型的对象,或者如果该对象未初始化,则需要此转换的程序具有未定义的行为.[...]

那么*ptr = 0; 转换需要吗?

如果我们转到41节,它说:

[...] 如果需要,标准转换序列将应用于表达式 ,以将其转换为所需的目标类型.

那么什么时候需要呢?如果我们看一下5 表达式,第9段中提到了左值到右值的转换,它说:

每当glvalue表达式作为操作符的操作数出现时,该操作符需要该操作数的prvalue,左值到右值(4.1),数组到指针(4.2)或函数到指针(4.3)标准转换是用于将表达式转换为prvalue.[...]

和第11段说:

在某些情况下,表达式仅出现其副作用.这样的表达式称为丢弃值表达式.[...]当且仅当表达式是volatile限定类型的左值并且它是以下之一时,才应用左值到右值转换(4.1). ...]

两段似乎都不适用于此代码示例和5.3.1 一元运算符1段它说:

一元*运算符执行间接:它所应用的表达式应该是指向对象类型的指针,或指向函数类型的指针,结果是指向表达式指向的对象或函数的左值.如果表达式的类型是"指向T的指针",则结果的类型为"T".[注意:通过指向不完整类型(cv void除外)的指向的间接有效.由此获得的左值可以以有限的方式使用(例如,初始化参考); 这个左值不能转换为prvalue,见4.1. - …

c++ pointers indirection language-lawyer lvalue-to-rvalue

19
推荐指数
2
解决办法
775
查看次数

C中有指针声明的约定吗?

声明在C指针,有2个(编辑:3)的变体:

变式A:
__CODE__

变式B:
__CODE__

变式C:
__CODE__

  • 在A中,间接运算符已附加到该类型.
  • 在B中,间接运算符已预先添加到变量中.
  • 在C中,间接运算符在类型和变量之间自由站立.

声明指针的方式因我阅读的文档类型而异.一些作者似乎偏好某些变体,其他人使用几种变体.

  • 我是否正确地假设不同变体之间的功能没有区别?
  • 如果是,是否存在一个变量应该在C中使用的约定?

c pointers declaration indirection

17
推荐指数
5
解决办法
4551
查看次数