在Ruby中为什么$a和@a返回的是nil?

Python011

在Ruby中为什么$a和@a返回的是nil?,第1张

ruby中带“!"和不带"!"的方法的最大的区别就是带”!"的会改变调用对象本身了。比方说str.gsub(/a/,'b'),不会改变str本身,只会返回一个新的str。而str.gsub!(/a/,'b')就会把str本身给改了。但是gsub和gsub!还有另外一个不同点就是,gsub不管怎么样都会返回一个新的字符串,而gsub!只有在有字符被替换的情况下才会返回一个新的字符串,假如说没有任何字符被替换,gsub!只会返回nil.example:'abc'.gsub(/a/,'b')#返回'bbc''abc'.gsub!(/a/,'b')#返回'bbc''abc'.gsub(/d/,'a')#返回'abc''abc'.gsub!(/d/,'a')#返回nil

nil(计算机语言)。

nil表示无值,任何变量在没有被赋值之前的值都为nil,对于真假判断,只有nil与false、0表示假,其余均为真。

Objective-C, Swift, Ruby, Lua中的关键字,与C++里的NULL不同,NULL是一个宏定义,值为0,nil表示无值。

在Programming in Lua 程序设计第二版中原文是这样写的:

"nil是一种类型,它只有一个值nil,它的主要功能是用于区别其他任何值,就像之前所说的,一个全局变量在第一次赋值前的默认值就是nil,将nil赋予一个全局变量等同于删除它,Lua将nil用于表示一种“无效值(non-value)”的情况,即没有任何有效值的情况。"

adj. 未定义的;不明确的。

一、读音:英 [ˌʌndɪ'faɪnd];美 [ˌʌndɪ'faɪnd]

二、例句:

The result of the call is undefined.

调用的结果是未定义的。

三、词汇用法:

undefined是一个特殊值,通常用于指示变量尚未赋值。对未定义值的引用返回特殊值。其实大多数计算机语言,只有一个表示"无"的值,比如,C语言的NULL,Java语言的null,Python语言的None,Ruby语言的nil。

null与undefined

null的类型是一个对象,用来表示一个变量没有任何数值,而undefined是指变量没有定义任何值。

在JavaScript中,关键字null表示空值的意思,它表示对象为空,或者变量没有引用任何对象。如果当一个变量的值为null,则表明它的值不是有效的对象、数组、数值、字符串和布尔型等。如果使用alert(typeof(null))来检测null值的类型,则返回object,说明它是一个对象类型。

而undefined与null不同,它表示无值的意思,并且具有独一无二的类型,它区别任何对象、数组、数值、字符串和布尔型。alert(typeof(undefined))的返回值为undefined。