锦州公司做网站,轻云服务器菁英版 多个网站,网站维护方案怎么做,个人网页官方网站前情提要#xff1a; 第六天我们透过Ruby代码练习public#xff0c;protected和privatemethod时#xff0c;发现冒号在前面的参数#xff0c;#xff1a;mydraft#xff0c;#xff1a;myspace#xff0c;这些就是符号Symbol。在今天#xff0c;我们就来解释Symbol吧 第六天我们透过Ruby代码练习publicprotected和privatemethod时发现冒号在前面的参数mydraftmyspace这些就是符号Symbol。在今天我们就来解释Symbol吧 Ruby经典面试题目#07符号和字串有什么不同What’s difference between symbol and string 还记得我之前IT邦文章在Ruby on Rails项目例子中研究ruby的gem套件时我发现这两者写法的功能是一样的 image_directory tingsimage功能跟下者一样 image_directory: tingsimage冒号在前面意思是符号 冒号在后面意思是给值 当时的发现也是造就本篇文章想进一步探讨跑来跑去的小淘气冒号的原因。 比一比符号symbol字串string意思有名字的符号物件指向字串物件的变数(leafor)可不可变不可变immutable可变mutable修改数组不可使用[]方法可使用[]方法修改字串数组方法可使用[]取得数组内的字元可使用[]取得数组内的字元字元方法可使用.length .upcase .downcase可使用.length .upcase .downcase符号与字串转换符号转字串.to_s字串转符号.to_sym我们来用代码实验看看 tingsmessage “This is my 7th article”tingsmessage这个变数指向“This is my 7th article”这个字串物件变数的用意就是让我的字串物件可以随时做调整。明天我的message跑马灯就会换成第八天的招呼啰 如果我们把它变成tingsmessage的符号呢 它就会变成Symbol类别下的物件实体名字叫做tingsmessage。 来用代码实作 tingsmessage这个符号名字有12个字元名字的第1个字母是t数组位置[0]代表第1个第2个字母是i…以此类推 ptingsmessage.length #12ptingsmessage.upcase #TINGSMESSAGEptingsmessage[0] #tptingsmessage[1] #i而tingsmessage这个每天都会变来变去的变数所指向的字串一共有23个字元不信你数数看 tingsmessage “This is my 7th article”p tingsmessage.length #23p tingsmessage.upcase #THIS IS MY 7TH ARTICLEp tingsmessage[0] #tp tingsmessage[1] #h身为变数的好处就是可以任意修改。我们来试试改字母 tingsmessage[1] “Z”p tingsmessage[1] #Zp tingsmessage #TZis is my 7th article然而符号呢 tingsmessage[1]“Z”#undefined method [] fortingsmessage:SymbolNoMethodError符号会找不到[]方法修改字串。你可以想像符号就如同我们在护照上的名字是不能修改的。因为已经被定义在国际间海关通用的数据库了。 符号的好处是专一它被写在程序里固定的內存位置所以提取性能较高。我们可以用object_id的方法来实验 3.times doptingsmessage.object_idend 印出结果 104130810413081041308而变来变去的变数每次都在內存里面搬家到不同位置 3.times dop“tingsmessage”.object_idend印出结果 469362145094404693621450926046936214509180在前述比较表符号和字串之间可以互相转换的。 ptingsmessage #tingsmessageptingsmessage.to_s # tingsmessage前面的冒号已经不见了 p tingsmessage # TZis is my 7th articlep tingsmessage.to_sym #TZis is my 7th article前面多一个冒号何时使用符号Symbol需要性能较高地传递参数时例如在之前我们使用rails建立项目餐厅名字、电话等…这些数据库字段的名称是固定不变的 def restaurant_paramsparams.requirerestaurant.permitnameaddressphonewebsiteimageend回到文初一开头我终于明白 {image_directory tingsimage}其实是符号Symbol用在Hash外围被大括号{}包着里是变数给值的意思。 今天超级比一比就到这里结束啦(xcsjbj) 比一比符号symbol字串string意思有名字的符号物件指向字串物件的变数可不可变不可变immutable可变mutable修改数组不可使用[]方法可使用[]方法修改字串数组方法可使用[]取得数组内的字元可使用[]取得数组内的字元字元方法可使用.length .upcase .downcase可使用.length .upcase .downcase符号与字串转换符号转字串.to_s字串转符号.to_sym转载于:https://www.cnblogs.com/lannyQ-Q/p/10748686.html