博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GNU make manual 翻译( 一百五十八)
阅读量:6537 次
发布时间:2019-06-24

本文共 2119 字,大约阅读时间需要 7 分钟。

继续翻译

The previous example shows two levels of nesting, but any number oflevels is possible.  For example, here are three levels:     x = y     y = z     z = u     a := $($($(x)))Here the innermost `$(x)' expands to `y', so `$($(x))' expands to`$(y)' which in turn expands to `z'; now we have `$(z)', which becomes`u'.   References to recursively-expanded variables within a variable nameare reexpanded in the usual fashion.  For example:     x = $(y)     y = z     z = Hello     a := $($(x))defines `a' as `Hello': `$($(x))' becomes `$($(y))' which becomes`$(z)' which becomes `Hello'.   Nested variable references can also contain modified references andfunction invocations (*note Functions for Transforming Text:Functions.), just like any other reference.  For example, using the`subst' function (*note Functions for String Substitution and Analysis:Text Functions.):     x = variable1     variable2 := Hello     y = $(subst 1,2,$(x))     z = y     a := $($($(z)))eventually defines `a' as `Hello'.  It is doubtful that anyone wouldever want to write a nested reference as convoluted as this one, but itworks: `$($($(z)))' expands to `$($(y))' which becomes `$($(subst1,2,$(x)))'.  This gets the value `variable1' from `x' and changes itby substitution to `variable2', so that the entire string becomes`$(variable2)', a simple variable reference whose value is `Hello'.

前面的例子展示了两层的嵌套,但是任何层的嵌套都是可能的。例如,这里有三个层次:

x = y

y = z
z = u
a := $($($(x)))

这里,最里层的 `$(x)' 扩展到  `y',于是 `$($(x))' 扩展到`$(y)',进而扩展到`z'; 现在我们拥有`$(z)',它将变为 `u'。

在一个变量里面,对递归式扩展的变量的参照会合正常的扩展一样。例如:

x = $(y)

y = z
z = Hello
a := $($(x))

定义 `a' 为 `Hello': `$($(x))' 为 `$($(y))' ,然后转化为,`$(z)' ,再转化为 `Hello'。

嵌套的变量参照也能包含变化的参照和函数激活(*note Functiosn for Transforming Text: Functions),就像其他的参照一样。例如,使用 subst函数(*Functions for String Substitution and Analysis: Text Functions.):

x = variable1

variable2 := Hello
y = $(subst 1,2,$(x))
z = y
a := $($($(z)))

最终定义 `a' 为 `Hello'。是否会有人写出这样的嵌套式的参照是令人怀疑的,但是它确实可以工作:

`$($($(z)))' 扩展为 `$($(y))' ,它变成 `$($(subst

1,2,$(x)))'. 然后从x 来获得 `variable1' ,再通过变换,把它变成 `variable2', 这样整个字符串就变成了
`$(variable2)', 成为一个简单的变量参照,其值为 `Hello'。

后文待续

转载地址:http://gcbdo.baihongyu.com/

你可能感兴趣的文章
用 Flask 来写个轻博客 (19) — 以 Bcrypt 密文存储账户信息与实现用户登陆表单
查看>>
用 Flask 来写个轻博客 (19) — 以 Bcrypt 密文存储账户信息与实现用户登陆表单
查看>>
tomcat的编码方式
查看>>
scala数据库工具类
查看>>
解决 Jsp_Servlet 编码乱码问题
查看>>
PHP7扩展开发之Hello World
查看>>
Linux基础
查看>>
第三章 请求与响应
查看>>
垃圾收集器与内存分配策略
查看>>
看视频学Bootstrap—在微软虚拟学院学习Bootstrap
查看>>
【多重背包】CDOJ1691 这是一道比CCCC简单题经典的中档题
查看>>
【贪心】Codeforces Round #423 (Div. 1, rated, based on VK Cup Finals) A. String Reconstruction
查看>>
【强联通分量缩点】【Tarjan】bzoj1051 [HAOI2006]受欢迎的牛
查看>>
Java class反编译的方法总结
查看>>
AVCodec 结构体
查看>>
三、JVM垃圾回收1(如何寻找垃圾?)
查看>>
GemFire
查看>>
[DeeplearningAI笔记]卷积神经网络1.9-1.11池化层/卷积神经网络示例/优点
查看>>
JavaScript:Map和Set
查看>>
浮动。。。。。
查看>>