双冒号是什么意思?

双冒号是什么意思?,第1张

c语言的双冒号是什么意思::

c++中的名字空间限定

c语言里没有

双冒号是什么意思

双冒号::,是C++语言里面的符号。并不是C语言的。

它表示某个“类”里面的函数。

两个冒号是什么意思

两个冒号表示作用域 *** 作符。:: *** 作符在其左 *** 作数的作用域内找到其右 *** 作数的名字。用于访问某个命名空间中的名字,如std::cout,表明名字cout来自命名空间std。同样的可以用来从某个类取名字,如string::size_type,表明size_type是string类定义的

C++ 双冒号开头的语法是什么意思?

命名空间限定。

std::string

表示std命名空间下的 string类。

直接::开始,表示顶层命名空间(全局变量)std::string ->::std::string 这样也可以。

::和 文件路径的 / 可以对照理解。

linux下面没有盘符之分。 只有一个盘,所以也就没有C,D,E,F这种了。

/usr/share/abc.txt abc.txt 位于 /usr/share目录下

/abc.txt abc.txt直接位于硬盘下。第一个/就代表硬盘根目录。

c 语言里的 ::双冒号是什么意思啊

双冒号::,是C++语言里面的符号。并不是C语言的。

它表示某个“类”里面的函数。

在C++里面,双冒号是什么意思

域运算符

多用在类后面

Circle::area(){}表示Circle类范围内的area函数。

在ruby里双冒号是什么意思

双冒号 在ruby里面,是作为 命名空间的符号(namspace)

命名空间可以让类和模块的结构更清晰。

在c++编写代码是有单冒号:还有双冒号::他们两个是什么意思,作用是什么?

:用于标签,比如Label: switch case 中的常量: 或2元 表达式, a?b:c

表示一个标签符号的结束

::用于名称空间,比如 全局函数使用::GetWindow()

表示的是名称引用上的问题。

java 双冒号是什么 *** 作符

这里的for是Java中forEach, 用来遍历数组的。 for(int i : d) 就是遍历int型数组d的 每一次访问数组d的时候读取的数据放入int型的i中。 和for(int i=0i

存储过程中双冒号是干什么用的

双冒号:: (double colon)主要是PostgreSQL的语法。Oracle数据库没有。

在PostgreSQL数据库中,双冒号:: 是用于类型转换的,比如'2010-01-01'::date。

在SQL SERVER 2000中,::用在调用内置函数时,比如:

直接执行

SELECT * FROM fn_helpcollations()

将会出错。

而是需要在函数前加前缀::

SELECT * FROM ::fn_helpcollations()

如果是在SQL SERVER 2005上则不需要加::。

用法如下:

1、冒号在Linux中是一个空命令,可以认为与shell的内建命令true相同,它的返回值是0。在while循环中 while : 与 while true 的作用是等效的,在 if/then 中可作为占位符。

2、在Linux系统中,冒号(:)常用来做路径的分隔符(PATH),数据字段的分隔符(/etc/passwd)等。其实,冒号(:)在Bash中也是一个内建命令,它啥也不做,是个空命令、只起到占一个位置的作用,但有时候确实需要它。当然,它也有它的用途的,否则没必要存在。在·Linux的帮助页中说它除了参数扩展和重定向之外不产生任何作用。

题主你好,

写在前面:

题主的代码写的其实有点问题, 第2行的第1个字符,冒号,和第2个字符,美元符号,之间是有空格的,正确的写法是:

: ${YN:=yes}

不同的语言语法限制程度不一样, 在shell脚本中,对空格的限制就比较严格, 同样的代码, 你不加空格就是错的, 加上才对. 相同的用法在test命令的简写形式[]中也比较常见(就不具体展开了,题主有需要可以追问)

---------------------

下面解释题主的代码:

其实题主的代码逻辑很简单:

从标准输入中读取值赋给变量YN//这是第一行代码的作用

然后检测第一行的变量YN是否真的有值,如果有值,则跳过, 没值的话则将yes作为变量值赋给YN. 这里题主可能会问, 第一行代码不是已经从标准输入读取值赋给YN了嘛,怎么第2句还要检测YN是否有值呢? 这是因为如果第一句代码执行后, 你没有从键盘输入值,而是直接按的回车,则YN就没有值. 将第1句和第2句要连起来看, 就是:

"当我们没有从标准输入赋值给YN时, YN的默认值是yes"//这就是第二行代码的作用

至于第三行代码就没啥说的了, 就是看$YN和下面给定的哪个值相匹配,则执行哪个值下的语句,因为第三句这里也没写全,就先说到这里

---------------------

上面只是解释了一下这三行代码的意思, 下面再来说一下题主问题中 "第2行代码中两个冒号的意思"

先说第2个冒号吧, shell脚本中有一个概念叫替换运算符, 我们常见的变量赋值的形式是:

变量名=值

另外shell脚本还提供了一组稍复杂一点的处理变量的运算符, " := "就是其中一个, 这么说可能有点不对, 完整的语法是:

${变量名:=值}

而上面这个语法的处理逻辑是: 先看看 " 变量名 "是否存在并且非空, 如果是,则返回" 变量名 "的值. 举例来说:

name="zhangsan"

echo ${name:=lisi}

上面第一行代码是给变量name赋值为zhangsan, 第2行代码是用echo 输出${name:=lisi}的返回值, 而${name:=list}具体是啥值,上面也说了判定逻辑, 看看name是否存在且非空, 因为上面定义了name="zhangsan", 所以这里name肯定是存在且非空的, 所以${name:lisi}的返回值是name变量的值,即zhangsan. 因此 echo ${name:=lisi}也就变成了我们常见的形式: echo zhangsan, 即echo ${name:=lisi}输出的值为zhangsan.

上面是" 变量名 "存在的情况, 下面再来说" 变量名 "不存在的情况. 举例来说:

echo ${name:=lisi}

就上面这一行代码, 这里就简单说了, 因为name上面没有定义, 所以name是不存在的, 因此会将lisi赋给变量name, 返回值为lisi, 因此echo ${name:=lisi}变成了echo lisi, 所以最后的输出值为: lisi.

下面再来第2行代码的第一个冒号, 如果没有第1个冒号, YN的值会被作为命令去执行, 也就是说,

如果你只写 ${YN:=yes} , 则当YN之前有值,且为no时,则这句执行后, 返回值为no,然后no会被被作为一个命令执行, 因为系统里没有no这个命令,所以会报错, 说no这个命令没发现而当YN之前没有值时, 该命令执行后,返回值为yes, 同样,yes也会被作为命令执行, 会不断的输出y(这就是一种特殊性, 因为yes是linux中的一个命令,并且它没有参数的时候也不会报错, 但会重复输出y,因此你不会看到报错信息, 而是不断输出的y,如果你换一个值,比如${YN:=666},则执行后,就会输出666命令没发现).

因此最简单的记第1个冒号的作用是:

"它只评估后面的参数,而忽略参数的返回值"

写在最后: 上面洋洋洒洒说了一堆, 有些地方逻辑不是太严谨,有错误的地方也请题主指正.

希望可以帮到题主, 欢迎追问.


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8459867.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-16
下一篇 2023-04-16

发表评论

登录后才能评论

评论列表(0条)

保存