[转帖]ruby 中的符号

原文:[url]http://fujinbing.iteye.com/blog/1125897[/url]

1. "<<"

1) 创建一个绑定到特定对象的class

a="my string"

class <<a

def to_s

"this is #{self}" #将原来的array中的to_s方法进行修改

end

end

puts a.to_s # this is my string

2."@"

instance variable is simply a name preceded by an “at” sign (@)

3. "@@"

Class Variables

4. “$”
全局变量
5.
初学Ruby的时候,往往对字符串(String类)与符号(Symbol)这两种变量类型分不清楚,其实,我们大可不必纠缠这两种变量类型的内部实现,只需记住它们的特点和区别就可以了:

字符串和符号,都是Ruby中表示文本的方式

不管字符串变量也好,符号变量也好,都是用来表示文本的,它们之间,也可以互相转换(通过to_sym和to_s)

1.
>> "book".to_sym
2.
=> :book
3.
>> :track.to_s
4.
=> "track"


2. 相同的符号是一个对象,相同的字符并不一定是一个对象

这就是符号和字符串最大的差别,符号是不可变的,不能对一个符号进行修改。所以说,两个看起来相同的符号一定是一个对象,但是说两个看起来一样的字符串是一个对象,就不对了。

这里,我们用 equal? 方法检验这一点,当两个对象相同时,equal? 返回true,反之是false:

1.
>> :book.equal?(:book)
2.
=> true
3.
>> "book".equal?("book")
4.
=> false

处理符号相比字符串,占用更少的资源

这也就是为什么有些时候我们要使用符号的原因,由于字符串变量必须具有各种修改其内容的功能,所以字符串的维护和处理的开销就很大,但是有些时候,我们并不需要修改和处理创建的文本信息,这个时候用符号再好不过了。

比较典型的用法,就是在Rails中,用符号来指代散列中的参数名称:

1.
<% for article in @articles -%>
2.
<%= link_to article.title,
3.
:controller => "article",
4.
:action => "show",
5.
:id => article.id %>
6.
<% end -%>

反之,如果我们把 :controller 写成"controller",把 :action 写成"action",吧 :id 写成"id",每一个循环都要创建3个新的字符对象,但是我们又不需要对这些字符串进行修改操作,白白添加了很多处理器开销,而且写成符号的形式更加简练,可以更容易分别出参数和值,何乐而不为呢。
K210视觉项目上位机避坑指南:解决C#解析ESP8266 TCP图像流的乱码、卡顿与连接中断 本文详细解析了K210与ESP8266在视觉项目中的上位机开发问题,重点解决TCP图像流解析中的乱码、卡顿与连接中断问题。通过自定义协议、JPEG流重组、TCP连接优化等实战技巧,提升系统稳定性和性能,适用于嵌入式视觉开发者和C#上位机程序员。 阅读详情

相关推荐

具身智能的边缘计算核心构成方案

摘要: 具身智能(Embodied Intelligence)依赖物理实体与环境交互,而边缘计算(Edge Computing)通过本地化数据处理降低延迟、提升实时性。两者结合的核心方案包含五层架构:传感器层采集环境数据,边缘处理单元执行本地计算,通信模块实现低延迟传输,决策引擎运行轻量AI模型,执行器接口转化动作为物理操作。该方案以“边缘优先”为原则,满足毫秒级响应(如延迟<50ms),同时优化能效(功耗降低30%)和隐私保护。适用于机器人、自动驾驶等场景,通过分层闭环设计确保在资源受限环境中的可靠

老郑的博客 812

一步一步学Ruby(十六):符号

一、符号的定义 符号是Ruby内建类Symbol的实例,它们的标志是前导冒号。 :a :person :"Hello World" 二、字符串与符号可以相互转换 字符串转符号(to_sym或intern),符号也可以转换成字符串(to_s)   三、符号与字符串的关键不同点 1. 对于给定的文本,只存在一个符号对象,某个相同的写法(:a),表示同一个符号对象,但相同的字符串则表示不同的字符串对象...

上善若水 394

ADS新手必看:用Filter DesignGuide快速搞定一个4GHz LC低通滤波器(附保姆级避坑指南)

本文为ADS新手提供了4GHz LC低通滤波器的完整设计流程,重点介绍了如何使用Filter DesignGuide避免参数设置陷阱、正确解读仿真结果以及解决实际电路与理论值的偏差问题。通过真实工程案例,详细讲解了工程创建、Filter DesignGuide配置、电路优化、仿真设置及实际工程中的进阶技巧,帮助工程师快速掌握LC滤波器设计。

weixin_30878501的博客 300

Ruby的符号(Symbol)

Ruby的符号足以让很多初学者迷惑上一段时间,看过本章节后,或许会解开你心中的疑惑。在Ruby中,一个符号是就是一个Symbol类的实例,它的语法是在通常的变量名前加一个冒号,如 :my_syRuby的符号像一个字符串,因为它内部表现形式是一个字符序列。而与字符串不同的是,每个符号的实例只有一个。看下面的例子:array = ["foo", "foo", "foo", :foo, :foo, :f

1856

概率论 知识图谱 + 实战案例解析

本文通过构建概率论知识图谱,系统梳理了从随机试验、概率、条件概率到随机变量与分布的核心概念及其内在联系。结合朴素贝叶斯分类器和蒙特卡洛模拟等实战案例,深入解析了条件概率、独立性及大数定律等理论如何应用于机器学习与实际问题求解,旨在帮助读者建立结构化思维,将理论有效转化为解决实际问题的能力。

weixin_29051193的博客 267

HEVC/VVC中R-Lambda码率控制算法原理

文章目录1. 比特分配1.1 GOP级比特分配1.2 帧级比特分配1.3 LCU级比特分配2. 码率控制2.1 λ的计算和更新2.2 参数QP的确定 VVC中码率控制算法沿用了HEVC中经典的R-λ码率控制模型,R-λ由中科大的李斌博士提出(详情参考JCTVC-K0103)。R-λ模型的基础为视频编码中 R(比特 bpp)和 D(失真 MSE)之间的双曲线模型,即 D(R)=CR−KD(R) = ...

Aidoneus_y 6137

总结:Ruby中的@ % # $等各种千奇百怪的符号的含义等

初学RUBY时,一看各种稍微复杂一点的代码时很容易被RUBY各种约定的表示方法搞晕,这整理一下 。 (若标识符首位是小写字母或“_”,则该标识符就是局部变量或方法调用。) (以大写字母([A-Z])开始的标识符是常数、类名或者模块名) 以@开始的变量是实例变量,它属于特定的对象。可以在类或子类的方法中引用实例变量。 若引用尚未被初始化的实例变量的话,其值为nil。Ruby的实例变量无须...

weixin_30289831的博客 1729

AutoSAR系列讲解(入门篇)4.6-BSW的Watchdog功能

BSW的看门狗功能

雪云飞星的博客 1万+

ruby-符号

符号(symbol)是ruby内置类Symbol的实例。它有一个字面构造器:冒号引导符。可以通过这个记号,从字面上辨认出符号与字符串、变量名、方法或者其他的区别: :a :book 也可以通过程序的方式,在字符串上调用to_sym 方法 >>"a".to_sym =>:a 也可以将符号转变为字符串 >>:a.to_s =>"a" ...

fd2015的博客 381

Open3D KD-tree的使用【2025最新版】

Open3d使用FLANN构建KDTree以便进行快速最近邻检索。博客长期更新,本文最近一次更新时间为:2025年1月1日,代码已同步更新至Open3D 0.18.0版本。

点云侠的博客 40万+

ruby符号总结

“/n”是强制换行“#”{表达式}“$” 全局变量“@”实例变量“@@”类变量“【  】”参数“>>puts” 输出的内容。数组:自然数组。通键来访问原素。效率高,用中括号,多维数组。哈希:支持任何对象作键,灵活, 一个是键,一个是值,使用大括号。“%w”快捷方式。“/       /”是一个正则表达式。“/d”匹配所有可打印字符。“.”匹配任意字符。“=~”迭代器

railssky的专栏 939

Unreal5 从入门到精通之 学习Niagara特效系统

UE5 Niagara粒子系统解析 Niagara是UE5中的高性能粒子特效系统,相比传统粒子系统具有完全可编程性和可视化节点编辑两大特点。核心单元发射器(Emitter)分为模板发射器(预设效果如喷泉、火焰)和空白发射器(高度自定义)。系统提供13种预设模板,包括吹飞粒子、五彩纸屑爆发、动态光束等常见特效。 Niagara采用三级模块化设计: 系统级:全局参数设置与更新 发射器级:控制粒子生成规则与行为 粒子级:处理单个粒子的生命周期和渲染 关键模块包括初始化粒子属性、物理模拟、颜色渐变等,支持GPU加速

TxNet 1124

[转帖]ruby的字符串

[转帖]ruby的字符串 原文:http://fujinbing.iteye.com/blog/1126332 %{String} 用于创建一个使用双引号括起来的字符串 %Q{String} 用于创建一个使用双引号括起来的字符串 str= true or false "hello".include? "lo" #=> true "hello".include?...

jamst 177

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

转帖:对于各种语言的看法

Java:很好用,写起来很舒服,最喜欢、最熟悉的一门语言,每天都在用。 C:不会用; C++:C++是我在学校接触的第二门语言(第一门是Basic),但是工作后从来没有正式用过它,在学校就根本没有学会,在工作中又很少实际用到它,所以对于C++,我只能说:我学过它,而且学得很多,比如数据结构、算法等,但是我不会用它。 工作中偶尔用过几次C++,我的感觉是:微软MFC很难用,QT C++写

floating520的专栏 590

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Groovy创始人:Java面临终结 Scala将取而代之(转帖)

<br />2010-08-11 16:22 | 3587次阅读 | 【已有11条评论】发表评论 来源:51CTO | 收藏到我的网摘 Groovy创始人James Strachan前日在其博客(地址在Blogspot,未架好梯子前请勿随便点击)上发表了一篇文章,题目为《Scala as the long term replacement for java/javac? 》。以下是正文部分的翻译: 不要误解我的意思——我在过去的这十来年里写了无数的Java代码,并且坚信它相对C++和Smallt

lixkyx的专栏 1082

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

(转帖)现代人的学习方式

现在的开发工作要求我们能够快速掌握一门语言。一般来说应对这种挑战有两种态度:其一,粗粗看看语法,就撸起袖子开干,边查Google边学习;其二是花很多时间完整地把整个语言学习一遍,做到胸有成竹,然后再开始做实际工作。然而这两种方法都有弊病。第二种方法的问题当然很明显,不仅浪费了时间,偏离了目标,而且学习效率不高。因为没有实际问题驱动的语言学习通常是不牢固不深入的。有的人学着学着成了语言专家,反而忘了

zp752963831的专栏 553

【转帖】在Windows 7下取得管理员权限并替换记事本为Notepad2

记得Windows 7 beta刚出来的时候记事本终于被更新成office 2007的风格,让我大喜过望。但是等到了RC版又变成老记事本那个死样子,我实在受不了了,如是乎就又想到了xp下我经常使用的Notepad 2。什么是Notepad2:一个小巧,快速的替代微软记事本的软件,界面华丽,功能强大,免安装.特点: --自定义语法高亮, 支持 HTML, XML, CSS, JavaScript, ...

weixin_30550081的博客 195

入门任意一种编程语言所必须的几道习题

  版权申明:本文为博主窗户(Colin Cai)原创,欢迎转帖。如要转贴,必须注明原文网址   http://www.cnblogs.com/Colin-Cai/p/11073938.html   作者:窗户   QQ/微信:6679072   E-mail:6679072@qq.com   每当学习一门计算机语言,我们也要做一些练习以便逐步熟悉。随...

weixin_30580943的博客 259

Ruby Symbol 完全使用指南

Symbol 是 Ruby 「优雅表达」的基石之一,它的核心价值是用最轻量的方式表达标识符语义。记住一句话就够:当你要表达「一个名字、一个标签、一个状态」的时候用 Symbol;当你要处理「一段文本内容」的时候用 String。

岁月静好 257

Ruby 中的 symbol 符号

name中的是 Ruby 中定义符号(Symbol)的方式。符号用于表示名字、标识符、键等,效率高且唯一。在中,:name表示你要为实例变量@name自动生成 getter 方法。推荐在需要表示“名字”的地方使用符号,而不是字符串。如果你理解了符号的概念,你会发现它在 Ruby 中无处不在,比如 Hash 的键、方法名、状态标识等都非常适合用符号来表达。

Java的专栏 772

Ruby中的字符串与符号

初学Ruby的时候,往往对字符串(String类)与符号(Symbol)这两种变量类型分不清楚,其实,我们大可不必纠缠这两种变量类型的内部实现,只需记住它们的特点和区别就可以了:1. 字符串和符号,都是Ruby中表示文本的方式不管字符串变量也好,符号变量也好,都是用来表示文本的,它们之间,也可以互相转换(通过to_sym和to_s): >>  "boo

在水一方 1547

【Ruby on Rails全栈课程】2.4 ruby的数据类型--符号(Symbol)、特殊值(True、False 和 Nil)

1、符号(Symbol) 符号对象表示Ruby中的一些名称(类名、方法名、变量名等)和一些字符串。表现形式有:name或者:“string”,创建的对象会储存在ruby的符号表中,相同内容的符号不会再重新创建,在一些情况下,使用符号(Symbol) 处理名字可以降低 Ruby 内存消耗,提高执行速度。 2、符号和字符串的区别 (1)符号的优点是降低ruby的内存消耗,从而提高执行速度,符号的内容如...

腾讯云云开发布道师,慕课网合作讲师 716

雷柏VT1 MAX深度体验:小手形电竞鼠标的跨界魅力,从游戏到办公的全能表现

雷柏VT1 MAX电竞鼠标凭借54.4g超轻设计和独特的'8字形'收腰结构,成为中小手型用户的理想选择。搭载原相PA3950 Ultimate传感器和Nordic 54芯片,支持8000Hz回报率,游戏表现卓越。同时,其长续航和舒适手感也完美适配办公场景,实现从游戏到办公的全能跨界表现。

spark7igniter的博客 292

ruby中的逻辑运算符

def current_user @current_user ||= session[:user_id] &amp;&amp; User.find(session[:user_id]) end 短短一行代码,却含有很多逻辑,以前老是搞混,这里总结一下。 这句代码相当于  def current_user if @current_user return @current...

zimo1231的专栏 615
上一篇: [转帖]重新认识Ruby的多态和duck type
下一篇: [转帖]ruby 中的 respond_to 和send 方法
biyeah
博客等级 码龄24年 0粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值