首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么Ruby方法中使用感叹号?

在Ruby编程语言中,感叹号(!)通常用于表示一个方法是修改方法(mutator method),即它会改变对象的状态。感叹号的使用有助于提高代码的可读性和可维护性。

例如,在Ruby中,你可能会看到一个名为sort!的方法,它会直接修改数组的顺序,而不会创建一个新的排序数组。这与sort方法不同,后者会创建一个新的排序数组,而不会改变原始数组。

使用感叹号表示修改方法的一个好处是,它可以提醒其他开发人员该方法可能会产生副作用。这有助于避免在代码中意外地修改数据,从而导致错误和不可预测的行为。

总之,在Ruby中,使用感叹号表示修改方法是一种约定,有助于提高代码的可读性和可维护性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Ruby的字符串转换方法

Ruby,你可以使用各种方法来转换字符串。下面是一些常用的方法,当然选择哪种适用的方法还得更具具体项目来做调整。日常使用中下面的错误也是比较常见的,看看我们怎么处理哈。...1、问题背景在Python,内置的数据结构都有一个内置的to-string方法,当打印一个变量时,字符串会被方便地格式化为反映所用的数据结构。...那么,有没有Ruby等价于Python的内置to-string方法?2、解决方案在Ruby,通常有四种方法可用于获取对象的字符串表示形式。...事实上,在整个核心库,只有String类本身的空操作实现。2、#to_s:这也是Ruby的标准类型转换协议的一部分(类似于to_i、to_a、to_f、……)。...这些只是Ruby字符串转换的一些常见方法,还有其他更多的方法可供探索和使用。如果大家有更多的问题可以留言讨论。

9510

使用 Ruby 或 Python 在文件查找

对于经常使用爬虫的我来说,在大多数文本编辑器都会有“在文件查找”功能,主要是方便快捷的查找自己说需要的内容,那我有咩有可能用Ruby 或 Python实现类似的查找功能?这些功能又能怎么实现?...问题背景许多流行的文本编辑器都具有“在文件查找”功能,该功能可以在一个对话框打开,其中包含以下选项:查找: 指定要查找的文本。文件筛选器: 指定要搜索的文件类型。开始位置: 指定要开始搜索的目录。...方法: 指定要使用的搜索方法,例如正则表达式或纯文本搜索。有人希望使用 Python 或 Ruby 类来实现类似的功能,以便可以在任何支持 Python 或 Ruby 的平台上从脚本运行此操作。...以下代码提供了在指定目录搜索特定文本的 Ruby 脚本示例:require 'find'require 'rexml/document'​def find_in_files(search_text,...上面就是两种语实现在文件查找的具体代码,其实看着也不算太复杂,只要好好的去琢磨,遇到的问题也都轻而易举的解决,如果在使用中有任何问题,可以留言讨论。

9210
  • 为什么建议大家使用 Linux 开发?爽(外加七个感叹号

    2020年Java原创面试题库连载 【000期】Java最全面试题库思维导图 【001期】JavaSE面试题(一):面向对象 【002期】JavaSE面试题(二):基本数据类型与访问修饰符 【003...当我告诉他或者建议他使用 linux 时,会一脸惊讶的问我,那个怎么用(来开发或者日常使用)?...对我而言,在两年的使用经历,暂时没有遇到过 linux 下不能解决,必须回到 Windows 的。 而且,实在不行不是还有虚拟机吗。...至于这为什么是 linux 的优点,在我过去多年的 Windows 使用经验,我没有找到自定义系统快捷键的入口,更不用说自定义宏了。...暂时不太明白为什么这种选择的权利都没有。 而这些仅仅只是一些微不足道的例子。

    1.4K20

    为什么在静态方法不能使用this

    在JVM的运行时数据区中有个虚拟机栈(或Java栈),在它的里面是由栈帧'叠加'而成.栈帧由局部变量表,操作数栈,动态连接,方法返回地址等组成. 那么我们就从局部变量表角度解答下这个问题....下面是测试代码,一个静态方法query,一个普通方法shadow,这两个方法的参数和函数体完全一样. // 静态方法 public static void query(String year) {...int month = 12; String address = "Jiangsu"; System.out.println(address); } // 普通方法 public void...query方法的局部变量表,如下 shadow方法的局部变量表,如下 我们发现,非静态方法shadow的局部变量表中有this,而在静态方法query的局部变量表没有this....在普通方法,在它的局部变量表的第一个槽存放了this, 而静态方法的局部变量表没有存放this.

    1.9K30

    Nacos源码为什么使用了String.intern方法

    ,就是拼接一个GrouedName的字符串,但为什么在最后调用了一下intern方法呢?...而使用new关键字创建字符串时,创建的对象是分配在堆的,栈的引用指向该对象。...在JDK1.7,StringTable的长度可以通过一个参数指定: -XX:StringTableSize=99991 所以,在使用intern方法时需要慎重。...总结 本篇文章的写作的思路纯粹来源于阅读开源框架源码的一行代码,但如果仔细想一下为什么会如此使用,发掘背后的原理和相关的知识点,也是很有意思的。...面试系列 《面试题:聊聊TCP的粘包、拆包以及解决方案》 《面试题:重写equals方法为什么通常会重写hashcode方法?》 《面试官:如何找出字符串无重复最长子串?》 《还不懂Java的泛型?

    32210

    为什么StringhashCode方法使用神奇因子 31呢?

    今天我们接着聊聊String类型一个有趣的问题:hashCode 方法的因子31。...原因 2: 31 是一个质数:质数是只能被 1 和自身整除的数,使用质数作为乘法因子获得的散列值,在将来进行取模时,得到相同 index 的概率会降低,即降低了哈希冲突的概率。...但这里需要注意一个问题,为什么要是质数?。我觉得就是质数能很好的对只进行散列分布和减少哈希冲突--这感觉像一个传统。...ps:1就没算了,因为用1和没用是一样的--1乘以任何数都等于数本身,还算个啥呢 从上图可以看出,使用较小的质数做为乘子时,冲突率会很高。尤其是质数2,冲突率达到了 55.14%。...先来说,为什么不是101?我们知道,这个质数是要参与到哈希值的计算的。String字符串的字符数有个三五七八个很常见。

    11640

    NLP 评价文本输出都有哪些方法为什么要小心使用 BLEU?

    为什么需要一个对应的数值分数?好问题!如果我们想要使用机器学习来创建一个机器翻译系统,我们需要将一个对应、真实的数字分数输入到损失函数。...使用同样的度量方法,我们同样可以给它打 1 分。...这就帮我们解决了「three three three three」的问题,但是在下面这个因为某些原因单词按照字母进行了排序的句子,这个方法没有什么作用: Ate hazelnuts I three 如果使用我们当前这一方法...提取语料库每个句子的 BLEU 分数,然后对这些分数进行平均化处理,从而来人为增加你的实际分数——如果你使用了这种方法来试图发表工作,你的论文肯定会被评审拒绝。...BLEU 不考虑文本的意思 对于我来说,这是为什么不要仅仅依赖于 BLEU 这一方法来评价机器翻译(MT)系统的唯一一个最重要的理由。

    1.3K40

    JAVA重写equals()方法为什么要重写hashcode()方法说明

    失败的原因就是我们的身份证类:Code 没有覆写hashCode()方法。这个时候,当查找一样的身份证号码的键值对的时候,使用的是默认的对象的内存地址来进行定位。...有人发明了一种哈希算法来提高从集合查找元素的效率,这种方式将集合分成若干个存储区域,每个对象可以计算出一个哈希码,可以将哈希码分组(使用不同的hash函数来计算的),每组分别对应某个存储区域,根据一个对象的哈希吗就可以确定该对象应该存储在哪个区域...运行结果:size:2 为什么会是2呢?...,在比较equals方法,因为equals返回false,所以r1和r4不相等,同一r2和r4也是不相等的,r3和r4也是不相等的,所以r4可以放到set集合,那么结果应该是size:4,那为什么会是...,会先使用对象的hashCode值去找到这个对象,然后进行删除,这种问题就是因为我们在修改了r3对象的y属性的值,又因为RectObject对象的hashCode方法中有y值参与运算,所以r3对象的hashCode

    1.1K10

    关于 java 的 set,get方法,而为什么不推荐直接使用public

    我不知道有没有人遇到过,有一段时间,我都觉得那些 set,get的用处何在,我直接写一个public直接拿不就行了,多爽,但是随着使用的频繁,越来越想去搜索一下这个问题,而不是按照官方的推荐,前辈们的使用都是建议...这里引入其中的一句话: 在任何相互关系,具有关系所涉及的各方都遵守的边界是十分重要的事情,当创建一个类库时,就建立了与客户端程序员之间的关系,他们同样也是程序员,但是他们是使用你的类库来构建应用...即使你希望客户端程序员不要直接操作你的类的某些成员,但是如果没有任何访问控制,将无法阻止此事发生。所有的东西都将赤裸裸的暴露在世人面前。...综上所述,写到这里,我诞生了一个想法,其实set ,get ,public,对于它们使用完全取决于我们程序员自己,为了让项目之间的逻辑更加清晰,有些标准自上而下,慢慢的传了下来,无论你使用那种,但是有一个东西是无法避免的...补充说明,set字面意思设置,get获取,我们了解一下java面向对象编程的封闭性与安全性,private 修饰的set get方法方法封闭在了一个特定类,其他类就无法对其变量进行方法,这样就提高了数据的安全性

    1.5K20

    为什么 build 方法放在 State 而不是在 StatefulWidget

    为什么 build 方法放在 State 而不是在 StatefulWidget 呢?其中前2点是源代码的注释给出的原因,最后一点是我的一点个人理解。...灵活性 将 build 方法放在 State 中比放在 StatefulWidget 更具灵活性,比如说,AnimatedWidget 是 StatefulWidget 的子类,AnimatedWidget...试想一下,如果 build 方法放在 StatefulWidget ,则 AnimatedWidget 的 build 方法需要带一个 State 参数,如下: abstract class AnimatedWidget...闭包 this 指向异常 假设 build 方法在 StatefulWidget ,StatefulWidget 的子类写法如下: class MyWidget extends StatefulWidget...如果 build 方法在 State ,代码如下: class MyWidget extends StatefulWidget { final Color color; const MyWidget

    90420

    pycharmpyqt5使用方法_对使用方法视频

    PyCharmPyQt的使用方法 简单说明 本文范例软件 安装PyQt及相关软件 PyCharm设定:QtDesigner PyCharm设定: PyUIC (模块方式) PyCharm设定:...PyUIC (直接使用) PyCharm设定: PyRCC 在Qt Designer中新增资源文件 总结一下 配置完PyCharm Tools已经有快捷方式 打开Qt Designer则可以创建窗口...,拖拽各种需要的控件 保存的地址便是上面加ui的文件夹 Qt Desinger创建一个简单的界面 保存为test.ui选中并且点选PyUIC、生成test_designed.py A.如何使用这个生成的...直接使用 运行后如下图效果 代码有两处告警提示 B.如何使用这个生成的py文件呢?...继承方式 引用错误的处理方式 选择Suppress for statement也可消除提示 题外话、修正自动生成的代码 简单说明 PyQt是Python与Qt的融合,做为Python的一个模块使用,有很多工具包

    1.1K20

    javasynchronized使用方法

    System.out.println(Thread.currentThread().getName()+ “this is “+ num–);    }    }   }  } } 上面的样例为了制造一个时间差...,也就是出错的机会,使用了Thread.sleep(10) Java对多线程的支持与同步机制深受大家的喜爱,似乎看起来使用了synchronizedkeyword就能够轻松地解决多线程共享数据同步问题。...接着来讨论synchronized用到不同地方对代码产生的影响: 如果P1、P2是同一个类的不同对象,这个类定义了下面几种情况的同步块或同步方法,P1、P2就都能够调用它们。 1....它锁定的是调用这个同步方法对象。也就是说,当一个对象P1在不同的线程运行这个同步方法时,它们之间会形成相互排斥,达到同步的效果。...能够判断:假设一个类定义了一个synchronized的static函数A,也定义了一个synchronized 的instance函数B,那么这个类的同一对象Obj在多线程中分别訪问A和B两个方法

    32030
    领券